Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SELECT na tabeli której nazwa jest zależna od kolumny innej tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
c14ch0
Witam,

Mam 2 tabele:
tabela a

---------------------------------------
id |kol1 |status |wartosc |
---------------------------------------
1 |30 |bla |qqqq |
2 |40 |blaa |wwww |
3 |44 |blaa2 |eeee |
---------------------------------------


nazwa drugiej tabeli uzależniona jest od wartości kolumny kol1 z tabeli a dla konkretnego id, np.: dla id=1 tabela ma nazwę b_30; dla id=2 => b_40; dla id=3 =>b_44, itd.

przykładowa tabela b_30:
---------------------
id |kol3 |kol4 |
---------------------
1 |bla2 |bla3 |
---------------------


Chciałbym wyświetlić zawartość kolumny a.wartosc oraz kol3 i kol4 z drugiej tabeli dla a.status='bla'.
Czy macie jakieś pomysły ?
trafas
W MySql nie ma możliwości podania nazwy tabeli jako wartości dynamicznej.
Zakładając że masz skończoną liczbę tabel b_.... to ja bym się chyba pokusił o użycie warunku CASE dla kolumny a.kol1.

możesz sobie zrobić procedurę, która pobierałaby jako parametr dwie wartości w1 i w2.

w1 to byłaby szukana wartość z a.status
w2 to nazwa tabeli - czyli odwołanie do a.kol1

I robisz sobie w procedurze:

  1. ...
  2.  
  3. case when w2='30' then
  4. begin
  5.  
  6. SELECT a.wartosc, kol3 ,kol4
  7. FROM a
  8. CROSS JOIN b_30
  9. WHERE a.STATUS=w1
  10.  
  11. end
  12. case when w2='40' then
  13. begin
  14.  
  15. SELECT a.wartosc, kol3 ,kol4
  16. FROM a
  17. CROSS JOIN b_40
  18. WHERE a.STATUS=w1
  19.  
  20. end
  21.  
  22. ...
c14ch0
Witam,

Dzięki za częściowe rozwiązanie - niestety ilość tabel b_ nie jest skończona.

Będę musiał użyć PHP'a i po prostu użyć zmiennej, wykonując 2 zapytania.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.