Sql-Abfrage mit eindeutigen Spalte Wert

Mein Ziel ist es, eine Abfrage geschrieben. Ich habe drei Tabellen A, B und C. Die Tische sind so geschrieben, daß A. Gebot = B. Gebot, und B. cID = C. cID. Dies ist im Grunde erlaubt es mir um eine Abfrage zu schreiben wo ich den link ein Datensatz von a nach b, und verbinden Sie das b-Datensatz um einen Datensatz von c. So weit So gut, einfachen Abfrage.

Was mein problem ist... eine der Spalten in die Abfrage eingeschlossen (nennen wir ihn C. col3) hat eindeutige Werte; die Werte in dieser Spalte kann nur einmal in das Ergebnis der Abfrage, aber die anderen Spalten aus den anderen Tabellen, die nicht diese Anforderung haben.

Kann jemand mir helfen, schreiben diese Abfrage?

Dank...

Update 1:

Hier ist das Tisch-layout (sorry, ich muss mit generischen Namen)

Tabelle A

Hilfe, Angebot, aCol1, aCol2, aCol3 ... aCol10

Tabelle B

bID, cID, bCol1, bCol2, bCol3 ... bCol10

Tabelle C

cID, cCol1, cCol2, col3, cCol4 ... cCol10

Ohne den einzigartigen Wert-Einschränkung in col3, würde ich schreiben, die Abfrage wie diese:

SELECT
    A.aID, A.bID, A.aCol1 ... A.aCol10,
    B.bID, B.cID, B.bCol1 ... B.bCol10,
    C.cID, C.cCol1, C.cCol2, C.col3 ... C.cCol10
FROM
    A, B, C
WHERE 
    A.bID = B.bID AND B.cID = C.cID

... aber natürlich nicht, stellen Sie sicher, dass die Werte in C. col3 sind einzigartig.

Update 2:
Mehr info...

Tabelle A und Tabelle B haben ein eins-zu-viele-Beziehung; Eine ist die "header", B ist "item".

Tabelle B und Tabelle C haben eine eins-zu-eins-Beziehung.

Diese Tabellen sind Teil des caching-Mechanismus, so viele Daten, die ähnlich aussieht, aber doch anders in einigen cols.

Da ist der header, die meisten von dem doppelte Werte gefunden werden, die in A.

Ich muss zuerst, um die Reihenfolge der Zeilen von A. Hilfe, aber dann, nach, dass ich brauche nur die ersten Zeilen zurückgegeben, in denen der Wert für C. col3 nicht angezeigt wird, in einer vorangegangenen Zeile von col.

Das macht die Dinge ein wenig klarer, oder bin ich noch nicht, macht das überhaupt Sinn? 🙂

Letzte Aktualisierung:

Ich wählte Bartosz Klimek Antwort, wie es war in der Nähe, was ich brauchte; ich hatte nur zum ändern der verschachtelte join-Klausel in der Mitte.

Danke Euch allen für Eure Hilfe!!!

  • Ich sollte hinzufügen, dass ich bin mir bewusst, dass ich vermutlich so etwas wie eine geschachtelte select-Anweisung ... (wo.c.col3 in (select unique(c.col3) aus...)) usw., aber Frage mich, ob es eine bessere / richtige Weg, dies zu tun.
  • Wie andere schon gepostet haben, UNTERSCHEIDBAR ist wahrscheinlich das, was Sie suchen. Jedoch, von den Klängen der Dinge, vielleicht können Sie Ihr problem noch komplizierter werden als das. Können Sie einige weitere Informationen über Ihre Tabellen, deren Inhalte und die tatsächlichen Ergebnisse, die Sie sehen möchten?
  • Ich Stimme mit Robin, wir sind nicht in der Lage sein, um Ihnen zu helfen ohne weitere Informationen. Nur tun, eine VERSCHIEDENE ist wahrscheinlich nicht die Antwort, die Sie suchen.
  • Ja, sollte das klarer... die aktuelle Abfrage enthält mehr als 20 Spalten, plus die Spalte, die Bedürfnisse der unterschiedlichen Werte, so mit einer Gruppe von Aggregatfunktionen auf die anderen Spalten nicht' arbeiten. Ich bin mit JDBC.
  • Ich bin nicht sehr vertraut mit der java-Seite der Entwicklung, aber ist das nicht eine JDBC-Datenbank-Treiber-standard? Es ist kein DBMS. Könnten Sie vielleicht einige Daten, um uns zu helfen und Euch unterstützen. Als JohnFx Punkte heraus, die Frage, wie derzeit vorgesehen, ist fehlerhaft.
  • Ja, JDBC ist der Java-Schicht auf der Oberseite der spezifischen Datenbank-Treiber. Aber das ist nur eine Allgemeine sql-problem, und (nicht ??) haben nichts zu tun mit, welche Datenbank ich verwende, es ist nur eine Allgemeine Abfrage. Ich fügte hinzu, mehr details zu meiner Frage.
  • Ich habe eine Antwort unten, um hoffentlich zu helfen, zu erklären, warum die Frage nicht funktioniert
  • Können Sie fügen Sie einige Beispiel mit ein paar Zeilen Beispieldaten für die Quell-Tabellen und ein Beispiel der Ausgabe, die Sie wollen?
  • Ich fügte hinzu, ein zweites update; danke.

InformationsquelleAutor user85116 | 2009-03-31
Schreibe einen Kommentar