Neem vb deze query:

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
Wat selecteer je überhaupt?
En wat wil je?
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";
?>
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).
Inderdaad Karl, je hebt gelijk.
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.




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

Reageren