SQL Powiązania między tabelami.

0

Witam,
mam zapytanie, które z podanego okresu czasu ma wyciągać numery aukcji, jednak w przypadku kiedy transakcja posiada więcej niż jeden przedmiot sprzedany to numery aukcji dla takiej transakcji nie są pokazywane.

Select cs_Nick, tr_Source, tr_Id, tg_TransId, tg_PrimaryTransId, au_Number, tr_Grouped, tr_Group, tr_Complete, tr_Paid from cs__Customer
 JOIN tr__Transaction on tr_CustomerId = cs_Id
 LEFT JOIN tr_Group on tg_TransId = tr_Id
 LEFT JOIN au__Auction on au_Id = tr_AuctionId
 where tr_PayOnDelivery = '0' -- transakcja niepobraniowa
 AND tr_Paid = '0' --transakcja nieoplacona
 AND tr_Complete != '3' --transakcja nie zakonczona
 AND tr_Complete != '2' --transakcja nie anulowana
 AND  tr_Grouped = '0'
 AND tr_CreationDate BETWEEN tr_CreationDate AND '2014-10-29'

Takie zapytanie zwraca poniższy wynik:
user image

W kolumnie: "Au_number" wyświetla się null zamiast numeru aukcji.

Znane są ID owych transakcji, znajdują się one w kolumnie: "tg_TransId" i na ich podstawie mogę wyciągnąć numery aukcji owych transakcji, jak jednak to teraz połączyć?

0

Tak dla jasności. Chcesz wyświetlić te numery aukcji, z podanego okresu, które posiadają co najwyżej jedną transakcję zakończoną sprzedażą?

Jak jest oznaczona taka transakcja? Jak aukcje są powiązane z transakcjami?

To: tr__ , au__ jest koszmarne.. od tego są aliasy.

0

Tak dla jasności. Chcesz wyświetlić te numery aukcji, z podanego okresu, które posiadają co najwyżej jedną transakcję zakończoną sprzedażą?

Te transakcji, które posiadają tylko jedną sprzedaż są wyświetlane poprawnie i są na dole mojego screena.
problematyczne są transakcje, które posiadają więcej niż jedną sprzedaną rzecz.

Działa to tak, że przy zakupie na kilku różnych aukcjach tworzy się jedna transakcja grupowa, która posiada swoje: "tg_TransId"
Zakupy, które złożyły się na tą transakcje grupową mają swoje: "tg_PrimaryTransId"

Jak jest oznaczona taka transakcja? Jak aukcje są powiązane z transakcjami?

Taka grupowa transakcja oznaczona jest w kolumnie: "tr_Group"

Tabela aukcji i transakcji powiązana jest kolumną:
au_Id (id w tabeli aukcji) z tr_AuctionId (id aukcji w tabeli transakcji)

Wszystko jednak rozbija się o: "tg_TransId" bo na jego podstawie można dostać się do numeru aukcji.

Przykładowo wykonując zapytanie:

SELECT tg_TransId, au_Number
FROM au__Auction
JOIN tr__Transaction on tr_AuctionId = au_Id
JOIN cs__Customer on tr_CustomerId = cs_Id
JOIN tr_Group on tg_PrimaryTransId = tr_Id
WHERE tg_TransId = '22902'

Otrzymam numery aukcji właśnie dla pozycji 1 oraz 2 na moim screenie.

0

Czyżby w Sybase to robisz ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1