![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 251 Pomógł: 0 Dołączył: 21.01.2010 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
Witam,
posiadam 3 przykładowe tabele 1. test1 z kolimnami id, typ 2. test2 z kolumnami id, nazwa 3. test3 z kolumnami id, nazwa i teraz robie następujące zapytanie SELECT * FROM test1 LEFT JOIN test2 ON test1.id=test2.id AND test1.typ='2' LEFT JOIN test3 ON test1.id=test3.id AND test1.typ='3' ogólnie chodziło mi o to żeby pobierać: - wartość nazwy z test2 tylko gdy wartość z kolumny typ z tabeli test1 jest równe 2 - wartość nazwy z test3 tylko gdy wartość z kolumny typ z tabeli test1 jest równe 3 i niby działa tylko problem polega na tym że tabele test2 i test3 posiadają kolumne o tej samej nazwie "nazwa" z moich obserwacji wygląda to tak że: - w przypadku gdy typ=3 wszystko jest ok - ale gdy typ=2 nazwa jest pusta wiem że to normalne działanie mysql i można to obejść dodając do zapytania np "... SELECT *, test3.nazwa as nazwa2 FROM ... " ale to nie rozwiązuje mojego problemu. pomoże ktoś? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ewentualnie użycie CASE. -------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 251 Pomógł: 0 Dołączył: 21.01.2010 Skąd: Nowy Sącz Ostrzeżenie: (0%) ![]() ![]() |
dzięki wielkie śmiga, zrobiłem tak żeby było czytelniej bo twój przykład coś nie mógł mi zatrybić
SELECT *, IF(test1.typ=2,test2.nazwa,test3.nazwa) as nazwa FROM test1 LEFT JOIN test2 ON test1.id=test2.id LEFT JOIN test3 ON test1.id=test3.id Ten post edytował adi456 11.01.2017, 17:29:57 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 12:36 |