Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie danych z 2 tabeli...
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
jasina
Witam serdecznie

Mam 2 tabele samochody i wersje.

tabela samochody ma następujące kolumny:
samochod_id
samochod_nazwa
samochod_model

tabela wersje:
wersja_id
samochod_id
wersja_silnik
wersja_moc

Chciałbym pobrać wszystkie rekordy z tabeli samochodu, tak aby każdy model miał przypisany silnik o najmniejszej mocy tak aby na liście samochodów było coś takiego, np:
Cytat
Mercedes E
od 145 koni mechanicznych


Problem w tym, ze przy zapytaniu:

Kod
SELECT
    s.*,
    w.*
FROM samochody AS s
INNER JOIN wersje AS w ON s.samochod_id=w.samochod_id
ORDER BY
    w.wersja_moc ASC


To zapytanie jednak nie wykonuje tego co chciałem.
Dostaję listę rekordów wszystkich samochodów z wszystkimi silnikami a nie tylko z najsłabszymi czyli dostaję x Mercedesów klasy E (dla kazdej wersji 1 rekord)

Jak powinno wyglądać poprawne zapytanie?
Zbłąkany
Najpierw pobierz listę wersji o najniższej mocy silnika, a potem połącz ją z samochodami smile.gif . Poczytaj o funkcji MIN() .
jasina
A czy nie da się tego zrobić pobierając najpierw listę modeli ? Może UNION

Zrobiłem następujące zapytanie:

  1. SELECT
  2. s.samochod_id, s.samochod_nazwa, s.samochod_model
  3. MIN(w.wersja_moc) AS moc_min,
  4. MAX(w.wersja_moc) AS moc_max,
  5. COUNT(w.wersja_moc) AS ilosc_modeli
  6.  
  7. FROM samochody s p
  8.  
  9. LEFT JOIN wersje w ON (s.samochod_id = w.samochod_id)
  10.  
  11.  
  12. GROUP BY
  13. s.samochod_id, s.samochod_nazwa, s.samochod_model
  14. ORDER BY s.samochod_nazwa
  15. LIMIT 10 OFFSET 0


I otrzymuje takie dane jak chce... wyświetlam je tak:
Kod
while ($r=pg_fetch_array($q)) {
print "
$r[samochod_nazwa] $r[samochod_model]<br>
znaleziono $r[ilosc_modeli] modeli o mocy od $r[moc_min] do $r[moc_max]
";
}


Nie wiem tylko jak dodać do mojego zapytania warunek WHERE tak aby wyswietlać samochody o mocy minimalnej od 100...

jak daje:
  1. ...WHERE moc_min>100...

to wyskakuje mi błąd, że "kolumna moc_min nie istnieje"...

Czy ktoś wie jak rozwiązać ten problem?
jezoo
Cytat(jasina @ 25.12.2006, 16:17:24 ) *
to wyskakuje mi błąd, że "kolumna moc_min nie istnieje"...


sprobuj wpiswac razem: mocmin tzn nazwe kolumny zmien na taka jak podalem

ja mialem podobny problem ale u mnie nie widzial duzych liter np mialeem:
idPat to krzyczal ze takiego czegos nie ma a jak mu zmienilem na idpat to juz widzi i smiga smile.gif
moze u Ciebie jest podobny problem z tym ze z _

proba nie strzelba smile.gif
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.