Select in not in
Select * from artists where artists.id not in(select * from events where eventid=$id)
Kan je nu het resultaat van de 2e select opvragen met alleen deze query?
Of moet ik de query's apart (en dus trager) uitvoeren en het resultaat van de eerste query in de "not in" van de 2de zetten?
dbv,
cunces
Code (php)
1
2
3
4
2
3
4
<?php
$q = "SELECT * FROM artists WHERE (SELECT COUNT(*) FROM events WHERE artists.id = events.artist_id AND eventid = ".$eventid.") = 0";
?>
$q = "SELECT * FROM artists WHERE (SELECT COUNT(*) FROM events WHERE artists.id = events.artist_id AND eventid = ".$eventid.") = 0";
?>
Gewijzigd op 07/10/2010 11:49:37 door Pieter van Linschoten
Cunces v op 07/10/2010 11:26:14:
(...)
Select * from artists where artists.id not in(select * from events where eventid=$id)
(...)
Select * from artists where artists.id not in(select * from events where eventid=$id)
(...)
Neem dit door, want je kunt niet meerdere kolommen in je where gebruiken, wat jij dus nu wel doet. Zie ook dit, dit en dit.
Pieter van Linschoten op 07/10/2010 11:47:35:
Als hij zijn subquery goed schrijft kan het wel met WHERE IN. Dan krijg je uit jou query hetzelfde resultaat als wat uit zijn query komt.
Dus volgens mij is jou antwoord ook niet het antwoord op zijn vraag (wat die vraag dan ook mag zijn).
Geen * maar bijvoorbeeld 'artist_id' in je subquery.
Pieter van Linschoten op 07/10/2010 12:19:26:
Inderdaad Karl, je hebt gelijk.
Geen * maar bijvoorbeeld 'artist_id' in je subquery.
Geen * maar bijvoorbeeld 'artist_id' in je subquery.
Misschien is het dan ook nog effe mooi als je uitlegt hoe jou query werkt.
Cunces v op 07/10/2010 11:26:14:
Kan je nu het resultaat van de 2e select opvragen met alleen deze query?
Nee, je krijgt het resultaat van de subquery niet beschikbaar, dat wordt intern afgehandeld als voorwaarde voor het resultaat en met NOT IN sluit je juist uit dus het zijn een soort van tegengestelde belangen. Als je de resultaten van de twee select ook wil moet je een join maken op de twee tabellen met de juiste WHERE