SQL Query vraagje (unieke items uit tabel)

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • SeanCattery
  • Registratie: April 2010
  • Laatst online: 09-09 13:33
Ik heb 2 tabellen. Tabel a: table met berichten (messageid, bericht). Tabel b: om te kijken wie welke berichten al gelezen heeft (userid, messageid). Nu wil ik graag een query die de messages uit tabel teruggeeft die niet in tabel b voorkomen aan de hand van de userid.

Ik heb al iets geprobeerd met een left join and een where maar ik kom er helaas nog niet uit.

Bedankt alvast :)

Beste antwoord (via SeanCattery op 11-04-2017 09:53)


  • LordSinclair
  • Registratie: Oktober 2014
  • Nu online
code:
1
Select * from messages where id not in (select messageid from readmessages where userid = %userid%)

There's no need to kneel, I'm a very democratic sort of lord.

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • LordSinclair
  • Registratie: Oktober 2014
  • Nu online
code:
1
Select * from messages where id not in (select messageid from readmessages where userid = %userid%)

There's no need to kneel, I'm a very democratic sort of lord.


Acties:
  • 0 Henk 'm!

  • SeanCattery
  • Registratie: April 2010
  • Laatst online: 09-09 13:33
Thanks! :)

Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 09:40
Ik weet niet wat je doel precies is met die query, je kan ook gecombineerd deze gegevens ophalen:

SQL:
1
2
SELECT messages.messageid, messages.bericht, IF(readmessages.userid IS NULL, 0, 1) AS read
FROM messages LEFT JOIN readmessages ON messages.messageid = readmessages.messageid AND userid = %userid%


Deze constructie geeft alle messages terug, en 1 wanneer deze door de betreffende gebruiker is gelezen en 0 wanneer deze niet is gelezen. Je kan daar zelfs op "sorteren" en eventueel op filteren door op het userid in "readmessages" te controleren of deze NULL (leeg) is, of wel een waarde heeft *bericht is dan gelezen).

Maar zoals gezegd is het doel niet bekend van je vraag, dus wellicht dat je inderdaad alleen bovenstaande optie nodig hebt (door LordSinclair), omdat je echt alleen ongelezen berichten wilt ophalen.

[ Voor 29% gewijzigd door jbdeiman op 11-04-2017 09:56 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:58

Creepy

Tactical Espionage Splatterer

Het is heel erg aardig dat LordSinclair direct je een werkende oplossing geeft, maar wil je in het vervolg meer info geven over wat je hebt geprobeerd? Dus in dit geval zou je je queries kunnen laten zien en dan uitleggen waarom het niet het resultaat wat je had verwacht. Dat geeft ons meer inzicht over wat je wil bereiken en het laat zien dat je daadwerkelijk zelf al bezig bent geweest.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney