LEFT JOIN - Brak relacji pomiędzy tabelami

0

Witam.

To mój pierwszy post na forum 4programmers. Jak się okazała moja wiedza z SQL jednak jest niewystarczająca do zrobienia tego co potrzebuję :)

Otóż mam 2 tabele które nie posiadają bezpośredniej relacji po której mogę je zidentyfikować jednoznacznie i zrobić LEFT JOINA.

Jedyne co można wykorzystać i co przychodzi mi do głowy to to że po zrobieniu selecta po niektórych parametrach** ilość rekordów w obu tabelach jest taka sama i są one w tej samej kolejności**.

Czy znacie jakiś sposób który mógłbym tutaj wykorzystać ?

Muszę dopasować selectem w jakiś sposób rekordy [1] z [34] i [2] z [764] zupełnie nie patrząc na to co się w nich mieści.

Tabela1
ID
[1]...
[2]...

Tabela2
ID
[34]..
[764]..

2

<font style="font-size: 32px; color:red; text-weight:bold;">Nie ma czegoś takiego jak relacja pomiędzy tabelami. To tabela jest relacją.</span>

0

Pobierasz rekordy z obu tabel z dodając kolumnę ROWNUMBER http://technet.microsoft.com/pl-pl/library/ms186734.aspx
Następnie robisz joina dla rekordów z taką samą wartością ROWNUMBER.

PS. Masz zepsutą bazę jak potrzebujesz robić takie rzeczy.

0

a funkcja ROW_NUMBER nie załatwia sprawy? wprawdzie szczytem wydajności to to nie będzie, ale skoro nie masz innej opcji...

SELECT * FROM (SELECT *, ROW_NUMBER() as rn1 FROM tabela1) t1 LEFT JOIN (SELECT *, ROW_NUMBER() as rn2 FROM tabela2 ) t2 ON (t1.rn1 = t2.rn2) 

Takie zapytanie mniej więcej obrazuje o co mi chodzi, ale o użyciu tej funkcji sobie doczytaj - zapewne nie zrobiłem tego jak należy, nie znam MSSQL za dobrze.

0

ilość rekordów w obu tabelach jest taka sama i są one w tej samej kolejności.

O rly? A jak niby wymuszasz kolejność danych przy selecie? Bo nie widzę tam żadnego "order by" a bez niego kolejność JEST LOSOWA i nie masz pewności jaka będzie! To że dane fizycznie na dysku są ułożone w danej kolejności wcale nie znaczy że w takiej kolejnosci zwróci je select. Ba, nie masz nawet pewności ze dwa identyczne selecty wywołane pod rząd dadzą ten sam efekt...

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