Jest sobie takie zapytanie które ładnie zbiera dane z paru tabel:
SELECT
zlecenia.id,
zlecenia.numer_zam AS nr_zlecenia,
zlecenia.data_przyjecia AS data_zlec,
kontrahenci.skrot AS zleceniodawca,
CONCAT(osoby.imie, ' ', osoby.nazwisko) AS ImieNazwiskoZlec,
dok_zl.typ,
CONCAT(
osoby_dok.imie,
' ',
osoby_dok.nazwisko
) AS ImieNazwiskoOdb,
kontrahenci_dok.skrot AS zleceniobiorca,
dok_zl.data_wysl,
uzytkownicy.ImieNazwisko AS tworca
FROM
zlecenia
INNER JOIN dok_zl ON dok_zl.id_zam = zlecenia.id
INNER JOIN osoby ON zlecenia.nazwa_klienta = osoby.id
INNER JOIN kontrahenci ON kontrahenci.id = osoby.id_kontrah
INNER JOIN osoby AS osoby_dok
ON
osoby_dok.id = dok_zl.kontrahent
INNER JOIN kontrahenci AS kontrahenci_dok
ON
kontrahenci_dok.id = osoby_dok.id_kontrah
INNER JOIN uzytkownicy ON dok_zl.id_user = uzytkownicy.login
Ale próbując dołożyć prosty warunek - WHERE dostaję nie zrozumiały dla mnie błąd :/
Poniżej przykład i błąd:
SELECT
zlecenia.id,
zlecenia.numer_zam AS nr_zlecenia,
zlecenia.data_przyjecia AS data_zlec,
kontrahenci.skrot AS zleceniodawca,
CONCAT(osoby.imie, ' ', osoby.nazwisko) AS ImieNazwiskoZlec,
dok_zl.typ,
CONCAT(
osoby_dok.imie,
' ',
osoby_dok.nazwisko
) AS ImieNazwiskoOdb,
kontrahenci_dok.skrot AS zleceniobiorca,
dok_zl.data_wysl,
uzytkownicy.ImieNazwisko AS tworca
FROM
zlecenia
INNER JOIN dok_zl ON dok_zl.id_zam = zlecenia.id
INNER JOIN osoby ON zlecenia.nazwa_klienta = osoby.id
INNER JOIN kontrahenci ON kontrahenci.id = osoby.id_kontrah
INNER JOIN osoby AS osoby_dok
ON
osoby_dok.id = dok_zl.kontrahent
INNER JOIN kontrahenci AS kontrahenci_dok
ON
kontrahenci_dok.id = osoby_dok.id_kontrah
INNER JOIN uzytkownicy ON dok_zl.id_user = uzytkownicy.login
WHERE ImieNazwiskoZlec LIKE '%a%'
i błąd:
#1054 - Nieznana kolumna 'ImieNazwiskoZlec' w where clause
Gdzie robię błąd :(
Pozdrawiam
Torin
edit:
Częściowo rozwiązany - w WHERE stosujemy nazwy kolumn nie aliasy. Moja skleroza.
Ale
Czy w takim razie WHERE nie ma zastosowania w kolumnach złożonych z dwóch pól CONCAT-em ?