Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[mysql] odczyt danych z bazy danych - niepoprawne zapytanie
#1
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 ?
Odpowiedz
#2
Hmmm?

Jak złączasz tabele to zamiast where dla zz.id = zm.zleceniodawca_id stosuje się ON Tongue I daj LEFT JOIN a nie JOIN.
Odpowiedz
#3
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.
Odpowiedz
#4
tam obok selectu w zm.miejsce_kraj dodaj

zm.miejsce_kraj AS miejscekraj i przy wypisaniu używaj miejscekraj - zrobisz alias tego.
Odpowiedz
#5
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.
Odpowiedz
#6
Z tego co widzę to pole w bazie masz miejsce_kraj a nie miejscekraj
Odpowiedz
#7
(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
Odpowiedz
#8
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ć Wink.
Odpowiedz
#9
Chce pobrać nazwę kraju według ID z kolumny miejsce_kraje. Oddało mi wynik '1' zamiast nazwy kraju.
Odpowiedz
#10
daj tak

zm.miejsce_kraj AS miejscekrajunazwa

i odwołaj się przy wypisaniu $row['miejscekrajunazwa ']
Odpowiedz


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,203 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

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl