Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
[mysql] odczyt danych z bazy danych - niepoprawne zapytanie
|
Liczba postów: 283
Liczba wątków: 38
Dołączył: 25-12-2007
Reputacja:
4
Hej,
Mam problem z stworzeniem zapytania.
Mój schemat bazy danych to:
zlecenia_main
--- id
--- miejsce
--- opis
--- jezyk_id
--- zleceniodawca_id
--- kraje_id
--- miejsce_kraj
--- galeria
zlecenia_kraje
id
kraje
jezyk_id
zlecenia_jezyk
id
jezyk
zlecenia_zleceniodawca
id
zlecenia
kraje_id // kolumna narazie nie czynna
Pobieram zapytania poleceniem:
Kod: SELECT zm.id, zm.miejsce, zm.opis, zz.zlecenia, zk.kraje
FROM zlecenia_main zm
JOIN zlecenia_zleceniodawca zz
JOIN zlecenia_kraje zk
WHERE zm.jezyk_id = $jezyk
AND zz.id = zm.zleceniodawca_id
AND zk.id = zm.kraje_id
Chciałbym do tego jeszcze pobrać 'miejsce_kraj' (kolumna z id tabeli zlecenia_kraje) z tabeli zlecenia_kraje ale przy dodatniu tego do polecenia nie znajduje krajów wszystkich, tylko te gdzie są równe.
Jak mam poprawić zapytanie ?
Liczba postów: 1,054
Liczba wątków: 0
Dołączył: 28-05-2009
Reputacja:
22
Hmmm?
Jak złączasz tabele to zamiast where dla zz.id = zm.zleceniodawca_id stosuje się ON  I daj LEFT JOIN a nie JOIN.
Liczba postów: 283
Liczba wątków: 38
Dołączył: 25-12-2007
Reputacja:
4
Kod: SELECT zm.id, zm.miejsce, zm.opis, zz.zlecenia, zk.kraje, zm.miejsce_kraj
FROM zlecenia_main zm
LEFT JOIN zlecenia_zleceniodawca zz
ON zz.id = zm.zleceniodawca_id
LEFT JOIN zlecenia_kraje zk
ON zk.id = zm.kraje_id
AND zk.id = zm.miejsce_kraj
WHERE
zm.jezyk_id = 1
Poprawiłem zapytanie, które wcześniej już stosowałem, a wcześniej wkleiłem stare. Chodzi mi o to że teraz otrzymuję ID w miejsce_kraj. A chce je zastępić krajem z kolumny zk.kraj opisową nazwą, niż ID kraju.
Liczba postów: 1,054
Liczba wątków: 0
Dołączył: 28-05-2009
Reputacja:
22
tam obok selectu w zm.miejsce_kraj dodaj
zm.miejsce_kraj AS miejscekraj i przy wypisaniu używaj miejscekraj - zrobisz alias tego.
Liczba postów: 283
Liczba wątków: 38
Dołączył: 25-12-2007
Reputacja:
4
Kod: SELECT zm.id, zm.miejsce, zm.opis, zz.zlecenia, zk.kraje, zm.miejsce_kraj AS miejscekraj
FROM zlecenia_main zm
LEFT JOIN zlecenia_zleceniodawca zz
ON zz.id = zm.zleceniodawca_id
LEFT JOIN zlecenia_kraje zk
ON zk.id = zm.kraje_id
AND zk.id = miejscekraj
WHERE
zm.jezyk_id = 1
Rodi, z tego co zrozumiałem zapytanie miałem poprawić tak. Jednak powoduje ono błąd:
Cytat:#1054 - Unknown column 'miejscekraj' in 'on clause'
I tak w tym zapytaniu odwołuje się do tej samej tabeli, tylko przez alias. Pewnie nie zrozumiałem o co Ci chodziło.
Liczba postów: 852
Liczba wątków: 35
Dołączył: 17-12-2007
Reputacja:
12
Z tego co widzę to pole w bazie masz miejsce_kraj a nie miejscekraj
Liczba postów: 283
Liczba wątków: 38
Dołączył: 25-12-2007
Reputacja:
4
(01-09-2009, 02:11)Marcin napisał(a): Z tego co widzę to pole w bazie masz miejsce_kraj a nie miejscekraj
Poprawiłem zapytanie:
Kod: SELECT zm.id, zm.miejsce, zm.opis, zz.zlecenia, zk.kraje, zm.miejsce_kraj AS miejsce_kraj
FROM zlecenia_main zm
LEFT JOIN zlecenia_zleceniodawca zz ON zz.id = zm.zleceniodawca_id
LEFT JOIN zlecenia_kraje zk ON zk.id = zm.kraje_id
AND zk.id = miejsce_kraj
WHERE zm.jezyk_id =1
LIMIT 0 , 30
Aczkolwiek sql zwraca mi ciągle ID tego pola zamiast nazwy kraju z tym ID.
Przykład:
Kod: id miejsce opis zlecenia kraje miejsce_kraj
6 SITECH Polkowice zabudowa podestu i kontrola szczelności urządze... OLPIDÜRR S.p.A. Włochy 1
Liczba postów: 852
Liczba wątków: 35
Dołączył: 17-12-2007
Reputacja:
12
No pobrało Ci Włochy. Chciałbyś jeszcze id tego kraju? Jeśli tak to przecież id kraju przekazujesz w WHERE. W pierwszym przykładzie miałeś przypisane to do zmiennej $jezyk. Napisz co konkretnie chcesz pobrać  .
Liczba postów: 283
Liczba wątków: 38
Dołączył: 25-12-2007
Reputacja:
4
Chce pobrać nazwę kraju według ID z kolumny miejsce_kraje. Oddało mi wynik '1' zamiast nazwy kraju.
Liczba postów: 1,054
Liczba wątków: 0
Dołączył: 28-05-2009
Reputacja:
22
daj tak
zm.miejsce_kraj AS miejscekrajunazwa
i odwołaj się przy wypisaniu $row['miejscekrajunazwa ']
|
Podobne wątki… |
Wątek: |
Autor |
Odpowiedzi: |
Wyświetleń: |
Ostatni post |
|
cron nie łączy się z bazą danych |
michalszyd |
3 |
5,005 |
18-01-2018, 06:15
Ostatni post: ytprzetwornik
|
|
Zmniejszenie czasu dostępu do bazy |
darling |
8 |
8,413 |
06-12-2017, 18:00
Ostatni post: arki878
|
|
Jak sprawdzić czy adres www znajduje sie w bazie mysql? |
jarekcda |
8 |
9,069 |
13-05-2017, 01:02
Ostatni post: miketodson255
|
|
Przeszukiwanie bazy, przechowywanie wyników |
vundo |
3 |
4,204 |
02-12-2016, 20:16
Ostatni post: tereska3
|
|
Pobieranie danych z dwóch baz danych |
jarekcda |
2 |
5,202 |
28-11-2016, 11:55
Ostatni post: ania9
|
Użytkownicy przeglądający ten wątek: 1 gości
|
|
Sponsorzy i przyjaciele
|
|
|