Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie tabel i problem z zapytaniem
Forum PHP.pl > Forum > Bazy danych > MySQL
Ureus
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
maly_swd
  1.  
  2. SELECT *
  3. FROM tabelaA AS ta
  4. LEFT JOIN tabelsB AS tb ON ta.IDJob=tb.IDJob AND tb.IDGracz=36
  5.  
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.