SQL Server : join eine Zeile zurückgeben von einem zu vielen-Beziehung mit zwei verknüpften Tabellen

  • Tabelle TRANS enthält Transaktions-Informationen (transaction_id, date, foo, bar)
  • Tabelle ELEM enthält Elemente der Transaktion (transaction_id, detail_id)
  • Tabelle DET enthält die Elemente (detail_id, size, weight, category)

Abfrage:

select * from TRANS t 
join ELEM e on (t.transaction_id = e.transaction_id)
join DET d on (e.detail_id = d.detail_id)

Jedoch TRANS kann einer von mehr ELEM/DET Zeilen zugeordnet. Also wenn ich 100 Zeilen in TRANS und führen Sie die Abfrage, werde ich wieder > 100 Zeilen, die nicht erwünscht ist.

Ich möchte jedoch wissen, wie viele Transaktionen haben DET Zeilen mit d.category=1, aber wenn ich beitreten mit der Bedingung, bekomme ich < 100 Zeilen (nur die Zeilen, die mit dieser Bedingung.

Ich möchte den Kuchen und Essen es auch. Ich möchte zum abrufen aller TRANS Zeilen in einem Datumsbereich, und auch habe ich das Ergebnis die Anzahl der Zeilen, in denen d.category=1. Wenn d.category != 1 dann ist mir egal, was drin ist, solange die TRANS Zeile ausgegeben.

  • Möchten Sie die Spalten aus ELEM und DET im Ergebnis zu?
InformationsquelleAutor Dave | 2012-11-20
Schreibe einen Kommentar