Autor | Zpráva | ||
---|---|---|---|
Kalby Profil |
#1 · Zasláno: 17. 6. 2009, 17:57:59
Zdravim,
delam vyhledavani podle urcitych kriterii a mam problem. Vypisuji seznam projketu , kde vypisuji cislo projektu, dodavatele (toho joinuju z firem), castku atd. A nyni bych chtel udelat vyhledavani podle faktur (Zda li projekt ma jiz vystavenou, nebo zda li byla k projektu obdrzena Prijata faktura). Dotaz muze byt i kombinovany. Takze bych nejak potreboval aby dotaz vypadal tak, ze pokud nejaka takova faktura existuje aby se projekt a jeho detaily vypsali, pokud ne aby se vubec nevypisoval. Problem je v tom ze kdyz to udelam tak ze kdyz chci to vyhledavani kombinovat, napriklad ze chci zobrazit jen projekty ktere maji jak vystavene tak prijate faktury a joinuju tu tabulku faktury tak uz to nefunguje struktura: projekt (id,castka,dodavatel_id) faktura(id,projekt_id,typ) dodavatel(id, nazev) typ udava zda-li je vystavena nebo prijata. Jeste bych dodal, ze vystavena faktura je vzdy jen jedna. prijatych muze byt vice. Ale to asi nebude mit vliv. Vi nekdo jak na to? To joinovani s tabulkou dodavatelu tam musi samozrejme zustat. Me nenapadlo jak to delat jednim dotazem. Napadlo me pouze Udelat si 2 dotazy. na prijate a vystavene faktury. Ulozit do poli id projektu kterym dotazy vyhovuji a ty pole pak porovnavat jake indexy jsou stejne a pomoci toho pak sestavit normalne nakonec WHERE projekt_.id=x or projekt_.id=y .... |
||
TomášK Profil |
#2 · Zasláno: 17. 6. 2009, 18:27:53 · Upravil/a: TomášK
Nejsem si jist, jestli jsem to pochopil dobře, je tohle to, co chcete?
SELECT projekt.id, ... dodavatel.nazev FROM projekt JOIN dodavatel ON projekt.dodavatel_id = dodavatel.id JOIN faktura ON faktura.projekt_id = projekt.id WHERE faktura.typ = 'prijata' OR faktura.typ = 'vystavena' GROUP BY projekt.id |
||
Kalby Profil |
#3 · Zasláno: 17. 6. 2009, 18:44:26
no blizis se, ale kdyz chci napriklad podminku aby oba typy faktur existovali pro dany projekt, tak pri tehle podmince mi vypise i kdyz existuje jen jedna. A kdyz dam mezi ne and a zkusim si to vypsat tak mi to pro zmenu nevypise zadnej projekt i kdyz takove projekty ktere maji obe faktury existuji.
|
||
TomášK Profil |
#4 · Zasláno: 17. 6. 2009, 19:08:26 · Upravil/a: TomášK
Co takto? Mělo by to vybrat jen projekty, které mají oba typy faktur.
SELECT projekt.id, ... dodavatel.nazev FROM projekt JOIN dodavatel ON projekt.dodavatel_id = dodavatel.id JOIN faktura AS prijate ON faktura.projekt_id = projekt.id AND faktura.typ = 'prijata' JOIN faktura AS vystavene ON faktura.projekt_id = projekt.id AND faktura.typ = 'vystavene' GROUP BY projekt.id |
||
Kalby Profil |
#5 · Zasláno: 18. 6. 2009, 08:44:52 · Upravil/a: Kalby
supr diky moc funguje jen bych jeste trosku opravil ten kod, ale byla to jen drobnost dik moc
SELECT projekt.id, ... dodavatel.nazev FROM projekt JOIN dodavatel ON projekt.dodavatel_id = dodavatel.id JOIN faktura AS prijate ON prijate.projekt_id = projekt.id AND prijate.typ = 'prijata' JOIN faktura AS vystavene ON vystavene.projekt_id = projekt.id AND vystavene.typ = 'vystavene' GROUP BY projekt.id Ještě jedna maličkost, jak na to když bych chtěl vypsat projekty, ktere naopak tu fakturu nemají, na to se mi nějak nepodařilo přijít... Díky |
||
Časová prodleva: 4 dny
|
|||
Kajman_ Profil * |
#6 · Zasláno: 22. 6. 2009, 20:17:19
Např.
select projekt.* from projekt left join faktura f on f.projekt_id = projekt.id -- AND f.typ in ('prijata','vystavene') where f.projekt_id is null |
||
Časová prodleva: 15 let
|
0