Laden...

Hilfe bei zwei Sql Abfragen

Erstellt von liberado vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.988 Views
L
liberado Themenstarter:in
273 Beiträge seit 2006
vor 17 Jahren
Hilfe bei zwei Sql Abfragen

Hallo Leute,
Also ich habe 2 Tabellen.

die erste
tblWorkstat :
-name
-ip

die zweite:
tblTasks:
-Request
-Comflag

Also in der Spalte Request stehen namen die auch in der spalte name in tblWorkstat stehen.

nun möchte ich aus der zweiten Tabelle(tblTasks) alle Requests selektieren wo Comflag nicht NULL ist.
Also

Select Request From Tasks where Comflag is Not Null

Danach möchte ich in der Tabelle tblWorkstat alle Namen selektieren wo ich vorher im ersten Selekt selektiert habe 🙂
also:
Select Name, ip from tblaWorkstat where name = (Ergebniss aus erstem select)

ist das irgendwie möglich ?

Gruß Liberado

13 Beiträge seit 2006
vor 17 Jahren

Hallo,

ich bin mir jetzt nicht ganz sicher, aber kann man nicht diese zwei Abfragen zusammenfassen, damit also ungefär so:

SELECT Name, ip from tblaWorkstat WHERE name IN (SELECT Request FROM Tasks WHERE Comflag IS NOT NULL)

bin mir aber nicht ganz sicher.

Das Genie beherrscht das Chaos

476 Beiträge seit 2004
vor 17 Jahren

hallo liberado,

ja das ist möglich. ersetze das "=" in deinem Statement durch "IN" und schon funktionierts.


SELECT name, ip 
FROM tblWorkstat 
WHERE name IN (SELECT Request
                          FROM tblTasks
                          WHERE Comflag IS NOT NULL)

vielleicht schaust du dir trotzdem noch "WHERE zur Auswahl einzelner Zeilen aus dem SELECT Recordset" an.

-yellow

EDIT: upps, zu langsam ;o).

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

L
liberado Themenstarter:in
273 Beiträge seit 2006
vor 17 Jahren

ok klappt Vielen dank
Gruß Liberado

N
67 Beiträge seit 2006
vor 17 Jahren

Moin,

Ich würd ja sagen so wäre es auch ganz nett:

Select name, id from tblworkstat, tbltasks where ((tblworkstat.name = tbltasks.request) and (tbltasks.cornflag is Not Null))

... müsste genauso gehen

MfG Niwrex

[edit] jetzt funzt schon egal ...

L
497 Beiträge seit 2006
vor 17 Jahren

Beides geht, aber die erste Variante dürfte bei großen Datenmengen schneller sein, da kein JOIN gemacht wird...

Ach ja, die Klammern um die Bedingungen in der zweiten Variante sind - im Gegensatz zu den Klammern bei der ersten Variante - bei SQL nicht nötig, da AND eine sehr niedrige Priorität hat, d.h. sie sind nur eine Geschmacksfrage.

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.

13 Beiträge seit 2006
vor 17 Jahren

@Lord Hessia: Interessant, das wusst ich nicht, ich mache immer die Klammern, weil ich gedacht habe man müsse sie setzten. Naja jetzt dienen sie halt nur noch der Übersichtlichkeit 😁

Das Genie beherrscht das Chaos

L
liberado Themenstarter:in
273 Beiträge seit 2006
vor 17 Jahren

ich hab den Abfragegenerator von Visual studio jetzt benutzt und der hat mir auch die klammern hinzugefügt!

L
497 Beiträge seit 2006
vor 17 Jahren

@liberado: Dem Editor ist es ja auch egal, wieviel er "schreiben" muss, der hat ja vermutlich auch ein SELECT tblWorkstat.name, tblWorkstat.ID usw. erzeugt.

@ICH_BIN_LETZTER: Bei Deinem Statement mit dem IN musst Du sie auch setzen, nur in dem anderen, wo mehreren Bedingungen mit AND verknüpft waren, da ist es nicht nötig. Das ist genauso wie bei C#, da muss man mehrere &&-verknüpfte Bedingungen in einem if ja auch nicht einzeln in Klammern setzen.

Sarkusmus ist, wenn nichts mehr hilft, außer Lachen.