Select in not in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Cunces v

cunces v

07/10/2010 11:26:14
Quote Anchor link
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
 
PHP hulp

PHP hulp

19/05/2024 11:13:59
 

07/10/2010 11:47:11
Quote Anchor link
Wat selecteer je überhaupt?
En wat wil je?
Gewijzigd op 07/10/2010 11:59:07 door
 
Pieter van Linschoten

Pieter van Linschoten

07/10/2010 11:47:35
Quote Anchor link
Ja, maar dan niet met WHERE IN.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php

$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
 

07/10/2010 12:09:09
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?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).
 
Pieter van Linschoten

Pieter van Linschoten

07/10/2010 12:19:26
Quote Anchor link
Inderdaad Karl, je hebt gelijk.
Geen * maar bijvoorbeeld 'artist_id' in je subquery.
 

07/10/2010 12:23:08
Quote Anchor link
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.
 
John D

John D

07/10/2010 12:32:00
Quote Anchor link
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.