Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> SELECT na tabeli której nazwa jest zależna od kolumny innej tabeli
c14ch0
post 8.08.2012, 16:09:37
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.09.2008

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


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 ?
Go to the top of the page
+Quote Post
trafas
post 9.08.2012, 22:48:25
Post #2





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

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


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. ...
Go to the top of the page
+Quote Post
c14ch0
post 10.08.2012, 07:52:46
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 27.09.2008

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 00:22