Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> złączenie pod pewnymi warunkami
maciu
post
Post #1





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

Ostrzeżenie: (0%)
-----


Czy jest w mysqlu taka możliwość, aby złączenie tabel zależało od pewnego warunku, np.
  1. SELECT * FROM tabela case when pole = 1 then JOIN tabela2 else JOIN tabela3 end


męczę się nad tym od jakiegoś czasu i nie mogę znaleźć rozwiązania. Przypuszczam, że nie da się tego rozwiązać, ale może ktoś z Was miał podobne doświadczenie?
Go to the top of the page
+Quote Post
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


da się to zrobić... zakładam 3 tabele:

Ta => (id_a, id_join, pole)
Tb => (id_b, opis)
Tc => (id_c, opis)

wtedy zapytanie wygląda tak:
  1. SELECT * FROM Ta LEFT JOIN (SELECT id_b , opis, 1 AS warunek FROM Tb UNION SELECT id_c, opis, 0 AS warunek FROM Tc) AS tmp ON id_join=id_b AND pole=warunek;

Powodzenia.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #3





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


A co jeśli tabele Tb i Tc się różnią? Inna ilość i format kolumn...

Ten post edytował JoShiMa 14.01.2009, 11:43:32
Go to the top of the page
+Quote Post
nevt
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


niemożliwe, w wyniku SQL nie możemy dostać w jednym wierszu 5 pól a w innym 9 pól...
wynikiem zapytania SQL jest zawsze macierz.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #5





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Tak mi się właśnie wydawało
Go to the top of the page
+Quote Post
nevt
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


można zbudować potworka, który po stronie sql upakuje tą zmienną ilość pól do pojedynczego pola w CONCAT_WS(), a potem po stronie PHP rozbijasz to sobie z powrotem w explode() ... ale odradzam takie rozwiązanie. taka potrzeba wyraźnie wskazuje na niedopatrzenie w strukturze danych, i lepiej sie skupić na zmianie tej struktury.
Go to the top of the page
+Quote Post
JoShiMa
post
Post #7





Grupa: Zarejestrowani
Postów: 1 374
Pomógł: 149
Dołączył: 1.03.2006

Ostrzeżenie: (0%)
-----


Cytat(nevt @ 15.01.2009, 15:43:09 ) *
taka potrzeba wyraźnie wskazuje na niedopatrzenie w strukturze danych, i lepiej sie skupić na zmianie tej struktury.

Nie sądzę, żeby to było niedopatrzenie i w ogóle nie widzę powodu zmieniać struktury danych.
Go to the top of the page
+Quote Post
nevt
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

Ostrzeżenie: (0%)
-----


Cytat
Nie sądzę, żeby to było niedopatrzenie i w ogóle nie widzę powodu zmieniać struktury danych.

no fakt. to z pewnością niedopatrzenie projektantów MySQL, że nie przewidzieli możliwości zwracania w jednym wyniku wierszy o różnej ilości kolumn i różnych typach danych...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.09.2025 - 18:45