Autor | Zpráva | ||
---|---|---|---|
Gogo_v Profil * |
#1 · Zasláno: 31. 10. 2011, 08:22:48
Dobrý den.
mam takovýto select SELECT KL.id, K.titul_pred, K.jmeno, K.prijmeni, K.titul_za, A.id AS aid,A.majitel, A.ulice, A.cpopisne, A.corientacni, A.mesto, A.psc, M.nazev AS owner, K.telefon, K.email, K.id as kid, SK.nazev AS knazev, S.id AS sid, S.cislo_smlouvy, SS.nazev AS snazev, IF (AK_T.nazev IS NULL OR AK.platnost_do < CURDATE(), SL_T.nazev, AK_T.nazev) AS sluzba_nazev FROM klient KL LEFT JOIN kontakt K ON KL.id = K.Klientid LEFT JOIN klient_stav SK ON SK.id = KL.Klient_stavid LEFT JOIN (smlouva S, smlouva_stav SS) ON KL.id = S.Klientid AND SS.id = S.Smlouva_stavid LEFT JOIN adresa A ON A.id = KL.Adresaid LEFT JOIN majitele M ON M.id = A.majitel LEFT JOIN fakturace F ON F.id = S.Fakturaceid LEFT JOIN sluzby SL ON S.id = SL.smlouva LEFT JOIN sluzby AK ON AK.akce = SL.id LEFT JOIN sluzby_typ SL_T ON SL.sluzba = SL_T.id LEFT JOIN sluzby_typ AK_T ON AK.sluzba = AK_T.id WHERE ((S.Smlouva_stavid IS NULL) OR (S.Smlouva_stavid != 3)) GROUP BY K.id ORDER BY K.prijmeni, K.jmeno kde ve scriptu upravuju podminky WHERE WHERE ((CONCAT(K.prijmeni, ' ', K.jmeno) LIKE '%Holub%') OR (K.telefon LIKE '%Holub%') ) AND ((S.Smlouva_stavid IS NULL) OR (S.Smlouva_stavid != 3)) GROUP BY K.id ORDER BY K.prijmeni, K.jmeno To vše funguje více méně jak má problém je že u jednotlivých klientů může být nebo nemusí více služeb většinou je ale jen u jedné nastaveno aktivní. To co je špatně je že mi to píše u klienta první načtenou službu. což je samozřejmě dáno tím selectem. Věděl bych i jak zjistit aktuální službu do podmínky přidám AND SL.povoleno=1 WHERE ((CONCAT(K.prijmeni, ' ', K.jmeno) LIKE '%Holub%') OR (K.telefon LIKE '%Holub%') ) AND ((S.Smlouva_stavid IS NULL) OR (S.Smlouva_stavid != 3)) AND IF(SL.povoleno != "",SL.povoleno=1,""), Děkuji za pomoc. |
||
Joker Profil |
#2 · Zasláno: 31. 10. 2011, 08:31:12
Gogo_v:
„AND IF(SL.povoleno != "",SL.povoleno=1,"")“ Takhle to nejde, ale stejný výsledek jako tohle by mělo: AND ((SL.povoleno = 1) OR (SL.povoleno="")) .
Ale ten výraz je divný, protože část bere sloupec povoleno jako řetězec a část jako číslo. Jakého je to typu? |
||
Gogo_v Profil * |
#3 · Zasláno: 31. 10. 2011, 08:55:49
Joker:
Ja to asi špatně popsal pointa je jinde, u klientu kde neni služba definovaná ten sloupec SL.povoleno vůbec není nemůžu tedy napsal SL.povoleno cokoliv protože ten sloupec tam prostě není :( `povoleno` tinyint(1) NOT NULL |
||
Gogo_v Profil * |
#4 · Zasláno: 31. 10. 2011, 09:00:39
odpověď je
AND (SL.povoleno = 1 OR SL.povoleno IS NULL) |
||
Kajman_ Profil * |
#5 · Zasláno: 31. 10. 2011, 09:11:12
Gogo_v:
Tu podmínku můžete dát rovnou do spojení LEFT JOIN sluzby SL ON S.id = SL.smlouva AND SL.povoleno = 1 |
||
Gogo_v Profil * |
#6 · Zasláno: 31. 10. 2011, 09:30:15
Kajman:
Děkuji za inspiraci určitě to někde využiju, ale v tomto případě nemůžu, jak říkam skládám docela šílené možnosti do filtru takže tím bych uřízl možnost vyfiltrovat volbu všechny neaktivní služby. Kažopádně děkuji za pomoc |
||
Časová prodleva: 13 let
|
0