Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jedno zapytanie i trzy tabele
tomekmvr
post 1.04.2008, 21:24:02
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 2
Dołączył: 11.09.2006

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


Witam

Mam trzy tabele:

tabela1
id | wiadomosc

tabela2
id2 | id2_tabela1 | nazwa

tabela3
id3 | id3_tabela1 | wartosc

Chcialbym wyciagnac wszystkie wartosci jednym zapytanie dla tabela3 gdy wartosc = 1, i nastepnie wszystkie wartosci dla tabela1 gdy id3_tabela1 = id i wszystkie wartosci gdy id3_tabela1 = id ale tylko wtedy gdy nazwa = 1.

Zrobilem cos takiego:
  1. $sql = 'SELECT * FROM tabela3 LEFT JOIN tabela1 ON tabela3.id3_tabela1 = tabela1.id
  2. LEFT JOIN tabela2 ON tabela3.id3_tabela1 = tabela2.id2_tabela1
  3. WHERE wartosc = '1' '


Nie wiem jak dopisac zeby wyciagalo wartosci z tabela2 gdy nazwa = 1
Prosze o pomoc.


--------------------
Go to the top of the page
+Quote Post
JoShiMa
post 1.04.2008, 22:26:09
Post #2





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

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


Nie wiem czy dobrze zrozumiałam. Może tak:

  1. $sql = "SELECT * FROM tabela3 LEFT JOIN tabela1 ON tabela3.id3_tabela1 = tabela1.id
  2. LEFT JOIN tabela2 ON tabela3.id3_tabela1 = tabela2.id2_tabela1
  3. WHERE wartosc = '1' AND nazwa = '1' "


--------------------
Go to the top of the page
+Quote Post
tomekmvr
post 2.04.2008, 13:26:01
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 2
Dołączył: 11.09.2006

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


Ten sposob nie dziala.

Sprobuje to jakos wytlumaczyc.

Chcialbym pobrac wartosci z tabela3 gdy wartosc =1 i odrazu podlaczyc do tej tabeli wartosci z tabela2 gdy tabela3.id3_tabela1 = tabela1.id i do tych dwuch tabel jeszcze podlaczyc tabele2 gdzie tabela3.id3_tabela1 = tabela2.id2_tabela1 ale tylko wtedy gdy nazwa = 1 dla tej tabela2, a jak nazwa nie bedzie rowna 1 to zeby pobralo tylko wartosci dla tych tabela3 i tabela1.


--------------------
Go to the top of the page
+Quote Post
JoShiMa
post 3.04.2008, 10:04:39
Post #4





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

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


to może tak:
  1. SELECT * FROM tabela3 LEFT JOIN tabela1 ON tabela3.id3_tabela1 = tabela1.id
  2. LEFT JOIN tabela2 ON tabela3.id3_tabela1 = tabela2.id2_tabela1
  3. WHERE wartosc = '1' AND nazwa != '1'
  4. UNION
  5. SELECT * FROM tabela3 LEFT JOIN tabela1 ON tabela3.id3_tabela1 = tabela1.id
  6. LEFT JOIN tabela2 ON tabela3.id3_tabela1 = tabela2.id2_tabela1
  7. WHERE wartosc = '1' AND nazwa = '1'


Tylko zamiast gwiazdek musisz wypisać ręcznie te wartości i w pierwszej części zapytania te pochodzące z trzeciej tabeli zapisać wynulowac w ten sposób: null as id2, nul as id2_tabela1, null as nazwa

Otrzymasz tabelę w której rekordy spełniające warunek nazwa = '1' będą pełne a rekordy nie spełniające tego warunku będą miały null w polach pochodzących z trzeciej tabeli.

Nadal nie wiem, czy o to ci chodziło.

Ten post edytował JoShiMa 3.04.2008, 10:06:15


--------------------
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: 23.06.2025 - 19:06