probleme mit subquery ... bzw. beim denkansatz ...
susi
- datenbank
hallo,
ich habe ein problem bei dem meine kompetenzen bei mysql anscheienndenicht ausreichend sind!
ich habe eine tabelle mit id1, id2, id3, id4 die mir etwas ähnliches wie einen pfad wiedergeben!
nun möchte ich eine select machen das folgendermaßen aussieht udn auch funktioniert!
SELECT * FROM netdeg3
AS 'A' WHERE (id1='2' AND (id2='8' OR id3='8' OR id4='8'))
alles okay bis hierhin ...
wenn ich jedoch keinen datensatz als ergebnis hier bekomme möchte ich einen inner join mit derselben tabelle anfertigen bei dem überprüft wird ob in jenem erweiterten select ein ergebnis zu finden ist!
meine konstruktion lautet:
SELECT * FROM netdeg3
AS 'A' WHERE (id1='2' AND (id2='8' OR id3='8' OR id4='8')) OR ( SELECT * FROM netdeg3
AS 'A' INNER JOIN netdeg3
AS 'B' ON A.id4=B.id1 WHERE B.id2='8' OR B.id2='8' OR b.id3='8' OR B.id3='8' OR B.id4='8')
jedoch funktioniert dieses konstrukt nicht!
hat jemand eine ahnung wie ich heir ein subslect einbaue?
bussi susi ...
hallo,
welche MySQL Version hast du?
version 4.1
version 4.1
ok, müsste sub-queries können. Welche Fehlermeldung kommt?
ja musst es ...
die frage ist nur nach dem wie?
wie bringt ich eine query dazu entweder einen normale abfrage zu starten udn wenn diese kein resultat liefert eine andere abfrage nachzuschieben?
SELECT * FROM netdeg3
AS 'A' WHERE (id1='2' AND (id2='8' OR id3='8' OR id4='8')) OR ( SELECT * FROM netdeg3
AS 'A' INNER JOIN netdeg3
AS 'B' ON A.id4=B.id1 WHERE B.id2='8' OR B.id2='8' OR b.id3='8' OR B.id3='8' OR B.id4='8')
Moin!
wie bringt ich eine query dazu entweder einen normale abfrage zu starten udn wenn diese kein resultat liefert eine andere abfrage nachzuschieben?
Gar nicht - jedenfalls nicht mit einer einzigen SQL-Abfrage (höchstens mit Stored Procedures, die du in 4.1 nicht hast).
Schick die erste Abfrage, prüfe die Zahl der Ergebniszeilen, schicke ggf. die zweite Abfrage.
Oder schicke ein UNION-Select, welches die erste und die zweite Abfrage vereinigt, überlege dir, wie du die beiden auseinanderhalten kannst, und prüfe dann hinterher, wie du das Ergebnis behandeln willst.
Ist es eigentlich Absicht, dass du diverse Bedingungen deiner zweiten Abfrage doppelt bzw. widersprüchlich formuliert hast?
- Sven Rautenberg
yo,
wie bringt ich eine query dazu entweder einen normale abfrage zu starten udn wenn diese kein resultat liefert eine andere abfrage nachzuschieben?
Gar nicht - jedenfalls nicht mit einer einzigen SQL-Abfrage (höchstens mit Stored Procedures, die du in 4.1 nicht hast).
doch, das sollte in einer abfrage gehen, bzw. eine der lösungen hast du selbst ja schon fast mit dem UNION gefunden. es gibt aber auch noch andere Wege. die frage ist nur, ob sich der aufwand lohnt. manchmal sind zwei abfragen besser als eine komplizierte.
Ilja