![]() |
Datenbank: MSSQL • Version: 2000 • Zugriff über: CoreLabs SDAC
Welche möglichkeiten für ein Select-statement?
Hi Ihr,
ich steh grad aufm Schlauch.... Ich habe 2 Tabellen. Die eine ist mit Mitarbeitern. Jeder Mitarbeiter hat eine mitarbeiter_id. Die zweite Tabelle hat Vorfälle. in der steht die mitarbeiter_id und eine vorfall_id ich möchte mit jetzt alle mitarbeiter ausgeben lassen, die NICHT eine bestimmte Vorfall_ID haben. welche möglichkeiten gibt es , diese abfage zu formulieren? könnt ihr mir mal auf die sprünge helfen? danke ;-) |
Re: Welche möglichkeiten für ein Select-statement?
Blödsinn gelöscht. Habs falsch verstanden.
|
Re: Welche möglichkeiten für ein Select-statement?
Hallo,
folgende Abfrage:
SQL-Code:
macht folgendes: Die innere Abfrage gibt alle MA, die einen bestimmten Vorfall haben (hier "2"), in der äußeren werden nun alle selektiert, die nicht in der inneren rausgegeben werden.
SELECT Mitarbeiter
FROM MA where MA.Mitarbeiter NOT IN (SELECT MA.Mitarbeiter FROM MA LEFT JOIN VorfallTab ON MA.Mitarbeiter = VorfallTab.Mitarbeiter WHERE VorfallTab.Vorfall="2"); Was einfacheres fällt mir im Moment nicht ein. Bis dann Peter |
Re: Welche möglichkeiten für ein Select-statement?
SQL-Code:
Aber ohne Gewähr. 8) Richtung müßte stimmen, hoffentlich. :mrgreen:
SelectSQL.Add ('SELECT M.*,V.* FROM MITARBEITER M JOIN VORFAELLE V');
SelectSQL.Add ('ON (V.ID_MITARBEITER = M.ID) '); SelectSQL.Add ('WHERE (V.NR <> '+Edit1.Text+')'); |
Re: Welche möglichkeiten für ein Select-statement?
@Hansa:
Wenn jetzt aber ein Mitarbeiter einen anderen Vorfall hat, der gerade nicht abgefragt wird, dann erscheint er in der Antwort-Tabelle. Angenommen, wir wollen wissen, welcher Mitarbeiter keinen Vorfall "x" hat, dann erscheint hier jeder Mitarbeiter, der z.B. einen Vorfall "y" hat. Das war aber hier wohl nicht gemeint. Das Problem bei SQL ist ja, dass die Nicht(!)existenz nicht gerade besonders simpel abzufragen ist. Bis dann Peter |
Re: Welche möglichkeiten für ein Select-statement?
Oh mist... ich vergass zu sagen, das ein mitarbeiter mehrere vorfälle haben kann.
tut mir leid. somit funzt dann hansas ansatz nicht mehr. @Prehders: hmm.. das ist ne lösung! das mit den nicht-existenzen ist echt nen problem. allerdings koppelt deine abfrage eigendlich 2 abfragen. wenn du jetzt ne tabelle mit 12 mio kunden hast und es da versuchst,dann kann es schon ein weilchen dauern..... hmm.. aber es ist erstmal ne lösung. vielen dank erstmal..... |
Re: Welche möglichkeiten für ein Select-statement?
ihr denkt zu kompliziert. :mrgreen: Es gibt im Join noch zwei wichtige Wörter : LEFT/RIGHT und OUTER
|
Re: Welche möglichkeiten für ein Select-statement?
Delphi-Quellcode:
so?
select mitarbeiter.* from mitarbeiter left outer join vorfall on mitarbeiter.id=vorfall.id
where vorfall.id is null hmmm... flitze gleich inne firma und werd das mal ausprobieren. hast recht. müßte auch funktionieren. jetzt muss ich nur mal schauen, welches schneller ist und weniger resourcen braucht ;-) werd ich nachher sehen. Vielen dank erstmal. |
Re: Welche möglichkeiten für ein Select-statement?
Zitat:
|
Re: Welche möglichkeiten für ein Select-statement?
Könnt ihr denn kein richtiges SQL mehr?
Immer dieser JOIN-Kinderkram. :mrgreen: Das Problem lässt sich total easy per StiNo SQL92 lösen:
SQL-Code:
SELECT X
FROM Y WHERE Z not in (SELECT A FROM B WHERE C = :BöserVorfall) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz