Suche Hilfe bei SQL-Statement
kaepten
- datenbank
Hallo HTML Freunde
Ich brauche Hilfe zu SQL Statements. Hier ist wohl nicht so ganz der richtig Ort und deshalb die Frage:
Gibt es ein deutsches SQL-Forum, wo einem bei SQL-Problemen geholfen wird? Oder gibt es ein englischsprachiges, welches eine grössere Community benützt?
Ich arbeite mit SQL-Server.
Vielen Dank für Tipps!
kaepten
Hi,
Ich brauche Hilfe zu SQL Statements. Hier ist wohl nicht so ganz der richtig Ort
hier ist der richtige Ort für HTML, CSS, Programmierung, Politik, Fußball, Whisky und Geschwindigkeitsrekorde bei australischen Nacktschnecken. Frag also einfach.
Cheatah
Hi,
Ich brauche Hilfe zu SQL Statements. Hier ist wohl nicht so ganz der richtig Ort
hier ist der richtige Ort für HTML, CSS, Programmierung, Politik, Fußball, Whisky
und viel wichtiger: Whiskey!
und Geschwindigkeitsrekorde bei australischen Nacktschnecken. Frag also einfach.
cu,
Andreas
Hi,
hier ist der richtige Ort für [...] Whisky
und viel wichtiger: Whiskey!
pfff! Banause.
Cheatah :-)
hallo Cheatah,
hier ist der richtige Ort für HTML, CSS, Programmierung, Politik, Fußball, Whisky und Geschwindigkeitsrekorde bei australischen Nacktschnecken. Frag also einfach.
Der Holunderwein fehlt in deiner Aufzählung!
Grüße aus Berlin
Christoph S.
Hi,
Der Holunderwein fehlt in deiner Aufzählung!
meine Aufzählung zeichnet sich durch mehrfach redundante Unvollständigkeit aus.
HTH
Cheatah :-)
Hi Cheatah
Es um folgendes Datenmodell
Tabelle : Dokumente
Tabelle : Gruppen
Tabelle : DokumenteZuGruppen
Es gibt also Dokumente die über die Tabelle DokumenteZuGruppen an Gruppen angehängt werden. (Oder umgekehrt, Gruppen beinhalten Dokumente). Einfache Sache eigentlich.
Mein Ziel: Ich möchte alle Dokumente finden, die in einer oder mehreren Gruppe vorkommen - und zwar _zwingend_ vorkommen.
Beispiel konkreter Daten (Inhalt Tabelle DokumentZuGruppen):
Dokument1 = Gruppe1
Dokument1 = Gruppe2
Dokument1 = Gruppe3
Dokument2 = Gruppe2
Dokument2 = Gruppe3
Dokument3 = Gruppe1
Dokument3 = Gruppe3
Nochmals mein Ziel: Ich will die Dokumente finden die in Gruppe1 UND in Gruppe2 vorkommen, alle anderen will ich nicht. Es darf also nur Dokument1 gefunden werden!
Ich habe schon eine programmierte Lösung, die mir aber schlecht vorkommet in Bezug auf Performance. Folgender Programmablauf mit mehreren Abfragen:
1. Ich suche erstmal (SQL mit IN) alle Dokumente (Id) die entweder in Gruppe1 oder Gruppe2 vorkommen. Das gibt mir mal eine eingeschränkte Menge.
2. Dann hole ich in einem Loop für jedes dieser gefunden Dokumente die Gruppen in denen es ist und prüfe, ob im Resultat für ein Dokument diejenigen Gruppen vorkommen, die ich suche (Gruppe1 und Gruppe2 muss vorkommen). Das mache ich in einem Loop über die Resultatmenge und baue eine Liste auf mit den ID's der Dokumente die wirklich matchen.
Wie könnte ich das vereinfachen? Ich bin auch bereit, das Datenmodell zu ändern...
kaepten
Diese Seite könnte dir bei der Lösung helfen.
Danke für den Tipp.
Meine beschriebene Lösung fuktioniert schon mit JOIN's (z.B. um die Gruppen der Dokumente zu ermitteln). Es muss aber noch vereinfachungspotential in der Ganzen Abfragerei haben, denke ich.
kaepten
Dann wäre es wesentlich einfacher, wenn du uns deinen bisherigen Code mal postest.
Dann wäre es wesentlich einfacher, wenn du uns deinen bisherigen Code mal postest.
Mach ich.
Mein Programmablauf:
1.
Alle Dokumente holen, die in mindestens einer der gesuchten Gruppe ist:
SELECT DISTINCT Document.Id FROM Document INNER JOIN DocumentDocumentGroup ON Document.Id = DocumentDocumentGroup.Document_Id_Fk INNER JOIN DocumentGroup ON DocumentDocumentGroup.DocumentGroup_Id_Fk = DocumentGroup.Id
WHERE (DocumentGroup.Id IN (Gruppe1,Gruppe2))
2.
LOOP : Nun im Loop Für jedes mit 1. gefundene DokumentId:
a. --> SQL Abfrage, alle Gruppen des Dokumentes mit ID xy ermitteln
SELECT d.Id, dg.DocumentGroup_Id_Fk FROM Document d INNER JOIN DocumentDocumentGroup dg ON d.Id = dg.Document_Id_Fk
WHERE (d.Id = "+ Loop-current-Dokument-id +")
b. --> Ich prüfe die Resultatmenge von a, ob meine zwei erforderlichen Gruppen enthalten sind. Wenn ja dann speichere ich die Id des Dokument in eine Liste DokumentIdListe. Diese Liste beinhaltet am Ende des Loop alle Id's der Dokumente die in beiden Gruppen sind.
<< Loop ENDE
3.
Für jedes Dokument in der DokumentIDListe hole ich schlussendlich die kompletten Daten der Dokumente. Die Id's aus der Liste DokumentIdListe füge zu einem IN (sqlIn) zusammen:
a. --> SELECT d.* FROM Document d WHERE d.Id IN (Dokument1)
Jetzt wo ich das so tippe *kopfschüttel* das kann doch nicht so komplex sein, das ist doch overkill!
kaepten
Wenn du die Daten mit einer 1:n Beziehung gespeichert hast in deinen Tabellen
»»Tabelle : Dokumente
»»Tabelle : Gruppen
»»Tabelle : DokumenteZuGruppen
^^^^^
Stehen hier die Daten in folgender Form?
+--------------+-------------+
| Dokumente FK | Gruppen FK |
+--------------+-------------+
| 1 | 1 |
+--------------+-------------+
| 1 | 2 |
+--------------+-------------+
| 2 | 2 |
+--------------+-------------+
....
»»Mein Ziel: Ich möchte alle Dokumente finden, die in einer oder mehreren Gruppe vorkommen - und zwar _zwingend_ vorkommen.
Dann stehen doch hier auch Alle Dokumente die in mindestens einer Gruppe vorkommen oder?
hi,
ich hoffe mal ich hab deine Anfrage richtig verstanden.
mein Vorschlag funktioniert mit subselect-Statements, gehen die in deinem RDBMS?
also:
suche alle documentids aus dokument
die in dieser menge vorkommen:
(suche alle documentids aus dokumentzugruppen mit gruppe=gruppe1)
und die in dieser menge vorkommen:
(suche alle documentids aus dokumentzugruppen mit gruppe=gruppe2)
gibt sicher noch zig andere Methoden, aber die hier viel mir zuerst ein.
Gruß
Wurf
Hi Wurf
Ich arbeite mit SQL Server.
suche alle documentids aus dokument == nicht ganz klar?
die in dieser menge vorkommen:
(suche alle documentids aus dokumentzugruppen mit gruppe=gruppe1)
== klar!
und die in dieser menge vorkommen:
(suche alle documentids aus dokumentzugruppen mit gruppe=gruppe2) == klar!
Wie mache ich dann den "äusseren" Vergleich? UNION oder sowas in der Art?
kaepten
Wie mache ich dann den "äusseren" Vergleich? UNION oder sowas in der Art?
Nee das geht nicht! Aber ich glaube ich habs, muss es nur noch verifizieren, ob das Resultat stimmt:
SELECT *
FROM DocumentDocumentGroup ddg
WHERE (DocumentGroup_Id_Fk = Gruppe1) AND (Document_Id_Fk IN
(SELECT Document_Id_Fk
FROM DocumentDocumentGroup
WHERE (DocumentGroup_Id_Fk = Gruppe2)))
kaepten
suche alle documentids aus dokument == nicht ganz klar?
select dokumentid from dokument
Wie mache ich dann den "äusseren" Vergleich? UNION oder sowas in der Art?
where dokumentid in
(select dokumentid from dokumentzugruppe where gruppe='gruppe1' )
and dokumentid in
(select dokumentid from dokumentzugruppe where gruppe='gruppe2' )
Hallo
Sieht ganz nach meiner Lösung aus! *freu*
Habe das gleich getestet und ich denke dass die Resultat immer stimmten.
Vielen Dank für die Unterstützung.
kaepten
Hi,
hier ist der richtige Ort für HTML, CSS, Programmierung, Politik, Fußball, Whisky und Geschwindigkeitsrekorde bei australischen Nacktschnecken. Frag also einfach.
ich suche einen weichen Single-Malt mit einer hohen Geschmackskomplexitaet. Bushmills ging, Redbreast ging, Glenmorangie ging, Scapa ging, aber so richtig fuendig bin ich da noch nicht geworden. Was empfehlen die SelfForum Whisky-Experten so?
Gruss,
Ludger
Hi,
ich suche einen weichen Single-Malt mit einer hohen Geschmackskomplexitaet. Bushmills ging, Redbreast ging, Glenmorangie ging, Scapa ging, aber so richtig fuendig bin ich da noch nicht geworden. Was empfehlen die SelfForum Whisky-Experten so?
probier's mal mit einem Auchentoshan Three Wood. Er hat einen fast honigartigen Charakter, und durch seine Lagerung in drei Fassarten (Bourbon, Sherry, PX) ist er ein Meisterstück der Komplexität.
Redbreast kenne ich noch nicht, wodurch zeichnet sich der aus?
Cheatah
Hi,
Redbreast kenne ich noch nicht, wodurch zeichnet sich der aus?
ist ein irischer, erinnert an Bushmills, schmeckt aber besser, irgendwie "schaerfer". Weitergehende Geschmacksanalysen kannst Du von mir nicht erwarten. :-)
Ist auch irgendwie ein etwas anderes Brandverfahren: pure pot stills
Hoechst empfehlens, wenn man weiche (ungetorfte oder wenig getorfte) Whiskys mag. (Gutes Preis-/Leistungsverhaeltnis)
Gruss,
Ludger
Hi,
Redbreast kenne ich noch nicht, wodurch zeichnet sich der aus?
ist ein irischer,
okay, das reicht mir eigentlich fast als Info: Kein Irish Whiskey, den ich je probiert habe, hat mir zugesagt. Ich merke ihn mir aber, für den Fall, dass er mir mal über den Weg läuft und mich vielleicht vom Gegenteil überzeugen kann :-)
Cheatah
Moin,
ich suche einen weichen Single-Malt mit einer hohen Geschmackskomplexitaet. Bushmills ging, Redbreast ging, Glenmorangie ging, Scapa ging, aber so richtig fuendig bin ich da noch nicht geworden. Was empfehlen die SelfForum Whisky-Experten so?
Dann empfehle ich einen Linkwood. Flora und Fauna hat da meistens tolle Abfüllungen.
MfG
MarkX.
Hi,
Dann empfehle ich einen Linkwood. Flora und Fauna hat da meistens tolle Abfüllungen.
danke fuer den Tipp. Werde ich mal probieren, habe die Marke aber im Supermarkt noch nicht gesehen.
Gruss,
Ludger
Moin,
danke fuer den Tipp. Werde ich mal probieren, habe die Marke aber im Supermarkt noch nicht gesehen.
Ist auch im Supermarkt nicht erhältlich. :-) Einfach mal im Whisky-Fachgeschäft nachfragen. Oder natürlich bei diversen Internet-Whiskyhändlern.
MfG
MarkX.
Hi,
danke fuer den Tipp. Werde ich mal probieren, habe die Marke aber im Supermarkt noch nicht gesehen.
Ist auch im Supermarkt nicht erhältlich. :-) Einfach mal im Whisky-Fachgeschäft nachfragen. Oder natürlich bei diversen Internet-Whiskyhändlern.
in franzoesischen Supermaerkten gibts aber eine recht grosse Auswahl. Der Einkauf ist dort billiger als im Internet-Versand.
Gruss,
Ludger
Hallo,
in franzoesischen Supermaerkten gibts aber eine recht grosse Auswahl. Der Einkauf ist dort billiger als im Internet-Versand.
Nunja, für mich würden sich die 8 Stunden Fahrt nach Frankreich nicht wirklich lohnen. :-) Ich dachte außerdem, die haben nur ein riesiges Weinangebot. Gibts da tatsächlich Single-Malt-Whisky?
MfG
MarkX.
Hi,
Nunja, für mich würden sich die 8 Stunden Fahrt nach Frankreich nicht wirklich lohnen. :-) Ich dachte außerdem, die haben nur ein riesiges Weinangebot. Gibts da tatsächlich Single-Malt-Whisky?
die Froesche scheinen jetzt schon mehr Whysky als Cognac zu saufen. Die Auswahl an Whykies in franzoesischen Supermaerkten ist wesentlich groesser als in denen des gerade von mir gewaehlten deutschen Aufenthaltsorts.
Gruss,
Ludger