MySQL Query kijken of naam bestaat in andere tabel
Hallo,
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.
Iemand enig idee?
Bedankt!
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!
select id, naam
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?
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
Yessss, helemaal bedankt hiervoor!
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!
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
Je was er dan ook bijna geweest
en
Dit verdient overigens niet de schoonheids prijs, de exists zal waarschijnlijk beter performen
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
EXISTS performed inderdaad beter, geeft true bij de eerste find en beeindigt de zoektocht, IN haalt alle voorkomens op en dat kan bij een grote tabel heftig worden.
De INNER JOIN is ook een goeie oplossing en bijvoorbeeld handig als je ook gegevens uit de online tabel nodig hebt!
De INNER JOIN is ook een goeie oplossing en bijvoorbeeld handig als je ook gegevens uit de online tabel nodig hebt!