Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie do dwóch tabel z warunkiem
Forum PHP.pl > Forum > Bazy danych > MySQL
gladiror
Mam dwie tabele:

Zlecenia:

id_zlecenia | tytul
1 | Zlecenie nr 1
2 | Zlecenie nr 2
3 | Zlecenie nr 3

i

Zlecenia_komentarze:

id_zlecenia | status_komentarza
1 | C
2 | K
3 | B

Potrzebuje wyciągnąć wszystkie informacje z tabeli Zlecenia, które posiadają status komentarza na "C'. Próbowałem następującym zapytaniem:

  1. SELECT zlecenia.id_zlecenia FROM zlecenia WHERE EXISTS (SELECT * FROM zlecenia_komentarze WHERE zlecenia_komentarze.status_komentarza='C')

ale niestety nie chce mi to w ten sposób działać. Mogę liczyć na jakaś podpowiedź? wink.gif
kartin
  1. ... FROM zlecenia z JOIN Zlecenia_komentarze zk ON ...
Pyton_000
Odwrotnie.
  1. SELECT z.* FROM zlecenia_komentarze zk JOIN zlecenia z ON(z.id = zk.zlecienia_id) WHERE zk.status_komentarza = 'C'
gladiror
Cytat(Pyton_000 @ 25.09.2014, 07:50:36 ) *
Odwrotnie.
  1. SELECT z.* FROM zlecenia_komentarze zk JOIN zlecenia z ON(z.id = zk.zlecienia_id) WHERE zk.status_komentarza = 'C'


Zmieniłem lekko, bo błędami sypało:

  1. SELECT z.* FROM zlecenia_komentarze zk JOIN zlecenia z ON(z.id_zlecenia = zk.id_zlecenia) WHERE zk.status_komentarza = 'C'


ale niestety dalej nie chce to działać :/
kartin
Co konkretnie nie działa? Zapytanie jest dobre, co najwyżej trzeba zachować wielkość liter w nazwach tabel.


Cytat(Pyton_000 @ 25.09.2014, 08:50:36 ) *
Odwrotnie.
  1. SELECT z.* FROM zlecenia_komentarze zk JOIN zlecenia z ON(z.id = zk.zlecienia_id) WHERE zk.status_komentarza = 'C'

Kolejność tabel w JOIN nie ma w tym przypadku znaczenia.
gladiror
Zwraca mi pusty wynik to zapytanie. Komórki dwie mają na pewno status_komentarza='C'...
phpion
Czy na pewno istnieją zlecenia do tych komentarzy? Oraz czy tabela zleceń ma kolumnę id czy id_zlecenia? Bo w pierwszym poście napisałeś inaczej niż jest w zapytaniu.
gladiror
Cytat(phpion @ 26.09.2014, 13:04:54 ) *
Czy na pewno istnieją zlecenia do tych komentarzy? Oraz czy tabela zleceń ma kolumnę id czy id_zlecenia? Bo w pierwszym poście napisałeś inaczej niż jest w zapytaniu.


Faktycznie brakowało uzupełnienia w bazie zlecenia smile.gif Dzięki za pomoc

Jeszcze takie jedno pytanko, bo w tym momencie pokazuje mi wszystkie, które mają status_komentarza='C', a jak doszlifować to, żeby pokazywało wsztystkie, które nie posiadają 'C' w tym polu? Próbowałem

  1. SELECT z.* FROM zlecenia_komentarze zk JOIN zlecenia z ON(z.id = zk.zlecenia_id) WHERE zk.status_komentarza <> 'C'


ale wtedy gdy tabela zlecenia_komentarze nie posiada żadnego rekordu z id_zlecenia to żaden rekord nie wyświetla się.

Chodzi o to, żeby wyświetliło mi wszystkie rekordy z tablica zlecenia, które nie posiadają rekordu w tablicy status_komentarza lub posiadają taki rekord, gdzie status_komentarza <> 'C'.
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.