Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Łączenie tabel i problem z zapytaniem
Ureus
post 10.09.2009, 07:39:49
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 9.11.2003
Skąd: Dąbrowa Górnicza

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


Mam problem z utworzeniem zapytania sql, a tak naprawdę to skończyły mi się pomysły jak to zrobić. Przechodząc do meritum, mam 2 tabele:

Kod
TABELA A
IDJob    nazwa
------------------------------------
  1        robotnik
  2        sprzedawca w sklepie
  3        kierowca
  4        malarz
  8        modelka
  10      pomoc w hospicium

TABELA B
IDJobG  IDGracz  IDJob
------------------------------------
   1       36     3
   2       34     2


Co chciałbym osiągnąć?
Wyświetlić wszystkie rekordy z tabeli A oraz dopasować do nich wybranego gracz (IDGracz=36):

Kod
TABELA A
IDJob    nazwa                      IDGracz
---------------------------------------------
  1        robotnik                 NULL
  2        sprzedawca w sklepie     NULL
  3        kierowca                 36
  4        malarz                   NULL
  8        modelka                  NULL
  10      pomoc w hospicium         NULL


Próby z JOINami przynosiły mi taki efekt że otrzymywałem wynik zbliżony do powyższego, przy czym odpadał mi rekord z IDJob=2 bo dla tego zawodu występuje już rekord w tabeli 2.

  1. SELECT *
  2. FROM tabelaA AS ta
  3. LEFT JOIN tabelsB AS tb ON ta.IDJob=tb.IDJob
  4. WHERE tb.IDGracz=36
  5. OR tb.IDGracz IS NULL


wynik zapytania:

Kod
TABELA A
IDJob    nazwa                      IDGracz
---------------------------------------------
  1        robotnik                 NULL
  3        kierowca                 36
  4        malarz                   NULL
  8        modelka                  NULL
  10      pomoc w hospicium         NULL


Może się poprostu biorę za to od złej strony. Ktoś naprowadzi?

Problem rozwiązany z pomocą kolegi:

  1. SELECT *
  2. FROM tabelaA AS ta
  3. LEFT JOIN (
  4. SELECT *
  5. FROM tabelaB AS tb
  6. WHERE IDGracz =36
  7. ) AS tc ON ta.IDJob = tc.IDJob


--------------------
--------------------------------
Ureus
Go to the top of the page
+Quote Post
maly_swd
post 10.09.2009, 12:51:59
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


  1.  
  2. SELECT *
  3. FROM tabelaA AS ta
  4. LEFT JOIN tabelsB AS tb ON ta.IDJob=tb.IDJob AND tb.IDGracz=36
  5.  


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
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: 12.06.2025 - 19:51