Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie z JOIN pobierające 1 / 1 / 2 wartości z danych tabel
Forum PHP.pl > Forum > Bazy danych
lukasamd
Witam,
temat może nie sugeruje tego co chcę przedstawić, ale nie wiedziałem jak to inaczej ująć.
Mam 3 tabele:

TYP_POJAZDU

- id
- nazwa

POJAZDY:
- id
- nazwa
- typ_id

ELEMENTY:
- id
- nazwa
- pojazd_id

W typ mam np. osobowe, ciężarówki itp. W pojazdy mam już konkretne samochody np. osobowy mój, albo tir renault itp.
W tabeli elementy mam zaś wyposażenie, ale każda część jest dodana osobno, może być więc tak (odpowiednio id, nazwa, pojazd_id)

1 - klima - 1
2 - abs - 2
3 - abs - 3
4 - centralny zamek - 1
5 - asr - 2
6 - halogeny - 5

Chciałbym je połączyć, wyciągając np. jeden samochód:

  1. SELECT t.nazwa, p.nazwa, e.nazwa
  2. FROM TYP_POJAZDU t
  3. INNER JOIN POJAZDY p ON p.typ_id=t.id
  4. INNER JOIN ELEMENTY e ON e.pojazd_id=p.id
  5. LIMIT 1


Wszystko niby cacy ale nie do końca:
- z tabeli TYP_POJAZDU pobierze mi 1 wartość (nazwę) dla 1 samochodu
- z tabeli POJAZDY pobierze mi 1 wartość (nazwę) dla 1 samochodu
- z tabeli ELEMENTY może pobrać mi X wartości (wyposażenie) dla 1 samochodu

Jak będę to mógł później przedstawić? W ogóle czy zapytanie zostanie wykonane, skoro w tabeli ELEMENTY pole pojazd_id może występować kilka razy? Chodzi mi o to, że chcę wyciągnąć typ, nazwę, i całe wyposażenie danego samochodu.
kefirek
Spróbuj może tak. W kolumnie elementy bedziesz miała wszystkie elementy danego pojazdu

  1. SELECT t.nazwa, p.nazwa, GROUP_CONCAT(e.nazwa) AS elementy
  2. FROM TYP_POJAZDU t
  3. LEFT JOIN POJAZDY p ON p.typ_id=t.id
  4. LEFT JOIN ELEMENTY e ON e.pojazd_id=p.id
  5. GROUP BY t.nazwa
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.