Zum Inhalt springen

Verschachtelte SQ L Abfrage in SQL Server 2000


bigpoint

Empfohlene Beiträge

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 ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Huhu bigpoint :D

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

@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 !!!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

@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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :D

Goos

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...