Witam!
Stoję przed następującym zadaniem - potrzebuję dwukrotnie złączenia dwóch tabel (załóżmy, tabela1 i tabela2), jednak za każdym razem złączenie ma się odbywać na podstawie innej kolumny. Jako że wyniki obu tych, różnych złączeń mają być w aplikacji wyświetlane razem, zastanawiam się czy da się to zrobić jednym zapytaniem? Oczywiście można to zrobić dwoma zapytaniami, zbuforować w aplikacji wyniki każdego z nich i (również w aplikacji) je złączyć, posortować i wyświetlić razem. Na pewno bardziej elegancko i wydajnie będzie jednak zrobić to w bazie, nie jestem jednak w stanie skonstruować odpowiedniego zapytania.
Skonstruowałem na razie następujący prototyp, z założenia błędny, ilustrujący tylko o co mi chodzi:
SELECT * FROM (SELECT a, b, c FROM tabela1 JOIN tabela2 ON kolumna1 WHERE [...]) AS FIRST, (SELECT a, b, c FROM tabela1 JOIN tabela2 ON kolumna2 WHERE [...])
Oczywiście nie uzyskuję tego, co chciałem, czyli tabeli o następującej strukturze:
+-----+-----+-----+
| a | b | c |
+-----+-----+-----+
| ... | ... | ... |
+-----+-----+-----+
zawierającej "wymieszane" wyniki obu złączeń, a jedynie coś takiego:
+-----+-----+-----+-----+-----+-----+
| a | b | c | a | b | c |
+-----+-----+-----+-----+-----+-----+
| ... | ... | ... | ... | ... | ... |
+-----+-----+-----+-----+-----+-----+
Oczywiście wiem dlaczego otrzymany wynik wygląda tak a nie inaczej (jest to iloczyn kartezjański), ale jak uzyskać ten pożądany?
Baza to najnowsze MySQL.
--
Z góry dziękuję za odpowiedź :)
Maciek