Query in einem Query

Maxwill

Neuer Benutzer
Beiträge
2
Hi,

es gibt ja die Möglichkeit ein weiteres Select in einem Select zu schachteln.
Kann ich dann auch eine Variable des ersten Selects als Where Parameter benutzen ?

sowas wie:

Select

numb as nr
, desc as beschreibung
,picid as bildid
from bilder b
where
not (select
count(*)
from bilderliste bl
where bl.bildid = ????? ) = 0



Ich will praktisch die erste Select Liste filtern , und zwar durch einen wert (bildid) , in dem zweiten select hol ich mir den count wie viele Bilder dieser speziellen bildid es gibt , falls es keine gibt wird die Zeile nicht erstellt.

Mein Problem liegt in dem abgreifen der einzelnen bilderid's und deren Zuweisung in dem zweiten select.

Ist das überhaupt möglich?!

habt vielen Dank

LG Maxwill
 
Werbung:
hmm , aber wenn ich nen Join mache bekomme wird meine Liste die ich zurück bekomme ja um den Faktor n länger mit viele redundanten Daten , ich will ja nur das aus der liste des ersten Select's die rausgefiltert werden welche mit ihrer bildid keine Einträge in der Liste des zweiten Select's haben.
 
Werbung:
Wenn ich das richtig verstehe suchst Du nach einem co-related Sub-Query mit EXISTS:

Code:
Select numb as nr,
       desc as beschreibung,
       picid as bildid
from bilder b
where exists (select *
              from bilderliste bl
              where bl.bildid = b.picid)

Das EXISTS ist schneller als ein count() weil es beim ersten Treffer aufhören kann. Mit count() zwingst Du die Datenbank alle Einträge anzusehen, auch wenn das gar nicht benötigt wird. Du willst ja die Bilder haben, für die mindestens ein Eintrag in der bilderliste existiert - die tatsächliche Anzahl interessiert Dich dabei ja nicht.

Der Vollständigkeit halber, Deine Abfrage müsste so aussehen:
Code:
Select numb as nr,
       desc as beschreibung,
       picid as bildid
from bilder b
where NOT (select count(*)
           from bilderliste bl
           where bl.bildid = b.picid) = 0
 
Zurück
Oben