bigpoint Geschrieben 23. September 2004 Teilen Geschrieben 23. September 2004 Wie kann ich folgendes machen. select t.anderenteil_spalten_1 from-- das geht nicht ( select t.teil_spalten_1 from ( select spalten_1 from ha ha where la la la ) as t ) as tt [/PHP] Ich will nicht in anderenteil_spalten_1 die spalten von tt benutzen sondern die von t Ich hoffe, dass ich mich verständlich genug ausgedruckt habe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 23. September 2004 Teilen Geschrieben 23. September 2004 IMHO kannst du das Alias t nicht gleich bei der Spaltenauswahl für den mittleren SELECT verwenden, da du diese Abfrage doch erst als t benennst. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 23. September 2004 Autor Teilen Geschrieben 23. September 2004 IMHO kannst du das Alias t nicht gleich bei der Spaltenauswahl für den mittleren SELECT verwenden, da du diese Abfrage doch erst als t benennst. welchen select meinst du ? select t.anderenteil_spalten_1 from -- select 3 ( select t.teil_spalten_1 from -- select 2 ( select spalten_1 from ha ha -- select 1 where la la la ) as t ) as tt [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 23. September 2004 Teilen Geschrieben 23. September 2004 Huhu bigpoint verstaendlich genug?....hmmmmm eigentlich mal wieder nicht Du solltest noch erklaeren, was spalten_1, teil_spalten_1 usw. sind. Meinst du mit spalten_1 eine selektierte Spalte, oder wirklich mehrere, die hier nur duch spalten_1 repraesentiert werden? Ist teil_spalten_1 dann ein Teil von denen mehreren Spalten_1, oder nur eine Untermenge von der EINEN Spalte Spalte_1? (ich glaub ich schaffs grad auch nicht sonderlich verstaendlich ) Versuch doch bitte nochmal in Worten zu erklaeren, was du machen willst und wie das Ergebnis lauten sollte Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kLeiner_HobBes Geschrieben 23. September 2004 Teilen Geschrieben 23. September 2004 wenn ich sage "mittleren", dann mein ich sehr wahrscheinlich "select 2" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 23. September 2004 Autor Teilen Geschrieben 23. September 2004 @goos Ok ich gebe mir mühe, also ich habe eine abfrage sagen wir select 1, die liefert mir par spalten (Daten) als Ergebnis. In der nächste abfrage sagen wir select 2 möchte ich par spalten von select 1 abfragen, gruppieren usw. ( das geht auch wunderbar ) Jetzt kommt das Problem, in der nächste abfrage möchte ich wieder von select 1 par spalten abfragen , gruppieren usw. Und das ganze in einem select !!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 23. September 2004 Teilen Geschrieben 23. September 2004 @goos Ok ich gebe mir mühe, also ich habe eine abfrage sagen wir select 1, die liefert mir par spalten (Daten) als Ergebnis. In der nächste abfrage sagen wir select 2 möchte ich par spalten von select 1 abfragen, gruppieren usw. ( das geht auch wunderbar ) Jetzt kommt das Problem, in der nächste abfrage möchte ich wieder von select 1 par spalten abfragen , gruppieren usw. Und das ganze in einem select !!!! Oehmmm, ich glaub ich versteh mal wieder den Sinn nicht Select 1 liefert ein paar Spalten, Select 2 ist ne Untermenge von Select 1, so wie das verschachtelt ist kann aber Select 3 dann auch nur eine Untermenge von Select 2 sein Wenn ich das richtig verstehe sollte aber Select 3 auch wieder nur eine Untermenge von Select 1 sein. Was sich mir nicht erschliesst ist wohl deine Verschachtelung, bzw die Tatsache dass alles ein Select sein soll. Letztendlich wird bei deiner Verschachtelung ja nur das Ergebnis von Select 3 zurueckgegeben. Also erklaer bitte noch, was du genau zurueckbekommen willst. Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 23. September 2004 Autor Teilen Geschrieben 23. September 2004 Ja ich denke Du hast es richtig verstanden, Um das ganze konkreter zu darstellen musste ich zu tief unsere DB Struktur erklären,und dass will und kann ich nicht Ich glaube auch das es von Prinzip einfach nicht geht, deswegen mache ich das ganze mit par abfragen die getrennt laufen ( ich wahr nur neugierig ob man es in eine sql packen kann ) Also Danke @goos für Deine Hilfe und sorry für die super Deutsche Erklärung bigpoint Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 23. September 2004 Teilen Geschrieben 23. September 2004 J Ich glaube auch das es von Prinzip einfach nicht geht, deswegen mache ich das ganze mit par abfragen die getrennt laufen ( ich wahr nur neugierig ob man es in eine sql packen kann ) ) bigpoint Och es hat doch keiner gesagt dass es nicht geht Denn wenn du vom Prinzip her das Ergebnis von Select 2 und Select 3 in einem Select zurueckbekommen willst, dann besteht im Ergebnisrecordset eine direkte Beziehung zwischen der Ergebnismenge von Select 2 und Select 3. Daraus kann man dann wieder folgern, dass sich Select 2 und Select 3 miteinander verheiraten lassen. Es waere also moeglich. Ich glaube allerdings eher, dass in deinem Fall die Ergebnisse von Select 2 und Select 3 nicht in einer direkten Beziehung zueinander stehen und somit auch gar nicht gemeinsam ueber ein Select zurueckgeliefert werden koennen. Also gehts dann wohl doch nicht Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 23. September 2004 Autor Teilen Geschrieben 23. September 2004 Denn wenn du vom Prinzip her das Ergebnis von Select 2 und Select 3 in einem Select zurueckbekommen willst, dann besteht im Ergebnisrecordset eine direkte Beziehung zwischen der Ergebnismenge von Select 2 und Select 3. Daraus kann man dann wieder folgern, dass sich Select 2 und Select 3 miteinander verheiraten lassen. Es waere also moeglich. Goos es klinkt sehr interessant, kannst Du bitte ein Beispiel liefern ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 23. September 2004 Teilen Geschrieben 23. September 2004 Ein pauschales Beispiel laesst sich dazu kaum machen. Im Prinzip laeuft es aber auf die gegenseitige Vertraeglichkeit der Bedingungen ,Gruppierungen und Sortierungen der einzelnen Selects hinaus. Immerhin scheinen dein Select 2 und Select 3 auf die selbe Datenbasis zurueckzugreifen. Wenn jetzt aber Beispielsweise dein Select 2 eine Bedinung "WHERE ID < 100" und dein Select 3 eine Bedingung "WHERE ID < 200" enthaelt, dann koennen die Ergtebnisse logischerweise nicht von einem Select zurueckgegeben werden. Natuerlich kann das Ganze auch um laengen komplexer sein Von der reinen Theorie her kann jetzt natuerlich niemand sagen, ob dir das in deinem Fall irgendwas bringt Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 23. September 2004 Autor Teilen Geschrieben 23. September 2004 Das ich es sehr interessant finde versuche ich ein bissen mehr zu erklären Also in select 1 gruppiere ich die Daten auf Grund von Datum und in having clausel mache mit diesem Datum Einschränkungen Beim select 2 nehme ich zwei spalten int, int von select 1, und gruppiere bei dritte spalte von select 1 und in der having clausel mache mit der dritte spalte Einschränkungen Jetzt aber will ich mit dem select 3 par anderen spalte von select 1 ausgeben Oh......... ist es schwierig zu beschreiben Etwa so im sql select t.spalte1, t.spalte2, t.spalte3, t.spalte4 from ( select t.spalte4,t.spalte5,sum(t.spalte7) from ( select r.spalte1, r.spalte2, r.spalte3, r.spalte4, r.spalte5, r.spalte6, r.spalte7,max(r.spalte8) from tabelle r group by r.spalte1, r.spalte2, r.spalte3, r.spalte4, r.spalte5, r.spalte6, r.spalte7 having r.spalte6>max(r.spalte8) ) as t group by t.spalte4,t.spalte5 having sum(t.spalte7)>10000000 ) as tt [/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Goos Geschrieben 23. September 2004 Teilen Geschrieben 23. September 2004 Also, wenn Select 2 mit "having sum(spalte7) > 1000000" und Select 3 ohne dieses Kriterium zurueckgegeben werden sollen, dann geht es schonmal nicht alles in einem gemeinsamen Select. Select 3 finde ich in diesem Statement etwas komisch, da einfach die Spalten 1-4 von Select 1 ausgegeben werden. Hierbei ist es theoretisch gut moeglich, dass du fuer die vier Spalten recht haeufig gleiche Eintraege zurueckkriegst (vielleicht ist das aber auch so gewollt). Ansonsten kann man hier nur viel spekulieren, da du zwar sagst was du wie gruppierst usw., aber ich trotzdem nicht weiss, wie das Ergebnis ueberhaupt ausschauen soll Goos Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.