MySQL Query kijken of naam bestaat in andere tabel
Is het enigszins mogelijk om met een query (bijv, innerjoin) te controleren of er in een 2e tabel een naam staat. Bijvoorbeeld:
In de tabel gebruikers staan alle gebruikers. En in de tabel ONLINE staan alle gebruikers die momenteel op de website zijn. Is het dan mogelijk om met een query alle gebruikers op te halen die OOK in online staan en de rest niet?
Ik heb wel een manier gevonden om het te doen met 2 query's. Maar wil het liever in 1x doen.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
--- GEBRUIKERS ---
ID | NAAM | TOKEN
01 | Kevin | 2346045645
02 | Bert | 3298972368
03 | Klaas | 4861836159
04 | Kees | 8237982709
ID | NAAM | TOKEN
01 | Kevin | 2346045645
02 | Bert | 3298972368
03 | Klaas | 4861836159
04 | Kees | 8237982709
Iemand enig idee?
Bedankt!
from gebruikers
where exists (select id from online where gebruikers.id=online.id)
SQL is een structured query language, je kan bijna je functionele vragen omzetten in SQL: "Geef me alle gebruikers uit tabel gebruikers die ook voorkomen in tabel online".
Hoe moeliijk kan het zijn?
Gewijzigd op 20/10/2010 15:37:13 door John D
Ik was er zelf eigenlijk niet op gekomen om het zo te doen, ik had wel het volgende al geprobeerd:
select id, naam
from gebruikers
where (select id from online where gebruikers.id=online.id)
Maar het gebruik van exists heeft het afgemaakt!
Gewijzigd op 20/10/2010 16:33:09 door Kevin van der Burgt
en
Dit verdient overigens niet de schoonheids prijs, de exists zal waarschijnlijk beter performen
Gewijzigd op 20/10/2010 17:46:48 door Noppes Homeland
De INNER JOIN is ook een goeie oplossing en bijvoorbeeld handig als je ook gegevens uit de online tabel nodig hebt!