<?php
$q = "SELECT * FROM artists WHERE (SELECT COUNT(*) FROM events WHERE artists.id = events.artist_id AND eventid = ".$eventid.") = 0";
?>
?
Onbekende gebruiker
07-10-2010 12:09
Cunces v op 07/10/2010 11:26:14
(...)
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
Ja, maar dan niet met WHERE IN.
<?php
$q = "SELECT * FROM artists WHERE (SELECT COUNT(*) FROM events WHERE artists.id = events.artist_id AND eventid = ".$eventid.") = 0";
?>
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).
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