prosim o pomoc s dotazem

14 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Potreboval bych sestavit dotaz a nevim, jak na to, pomuze mi nekdo? Situace je nasledujici: mam 3 tabulky: 1. uzivatele 2. dokumenty 3. zaznamy Pokud nektery z uzivatelu potvrdi libovolny dokument z tabulky dokumenty, zapise se do tabulky zaznam zapis s jeho ID, ID dokumentu a dalsimi udaji. Ja potrebuju sestavit dotaz, ktery zjisti, ktere dokumenty jeste dotycny uzivatele nepotvrdil. Slo by to tak, ze bych jednim dotazem vybral vsechny dokumenty a pak je prochazel a u kazdeho dalsim dotazem overoval, zda existuje zaznam o jeho potvrzeni danym uzivatelem. Pokud ano, nic by se nedelo, pokud ne, vypsal by se nejaky vystup a navysilo vlastni pocitadlo vysledku. Nicmene tento zpusob se mi nehodi, ponevac bych to potreboval mit vse v jednom dotazu. Vysledky totiz pote strankuju a v tom skripte vyuzivam fce mysql_num_rows($vysledek) a mysql_data_seek($vysledek, ($stranka*$kolik-$kolik))) a to by pak nefungovalo, pokud bych pro celkovy pocet zaznamu pouzival to vlastni pocitadlo. Nevite nekdo, jak tedy sestavit dotaz typu: "vyber vsechny dokumenty z tabulky 'dokumenty', kde v tabulce 'zaznamy' neexistuje zaznam o potvrzeni tohoto dokumentu timto uzivatelem"? predem dikas za kazdou radu
  2. dobrouběž spát a kašli na to:)
  3. select * from dokumenty where not exists (select * from zaznamy where potvrzeni=ok) ale jestli to jde v MySQL nevím.
  4. zkusil jsem: SELECT * FROM dokumenty WHERE NOT EXISTS (SELECT * FROM dokumenty, zaznamy WHERE zaznamy.id_dokumentu = dokumenty.id_dokumentu AND zaznamy.id_uzivatele = 'userID') ..vyhodilo mi to ale chybu syntaxe a nevim, kde je tedy chyba :o( ----------------------------------------- #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXISTS ( SELECT * FROM dokumenty, zaznamy WHERE ... -----------------------------------------
  5. Subselecty tahle verze mySQL jeste nezvlada
  6. dobre a jde to nejak obejit?
  7. file:///C:/mysql/Docs/manual_toc.html#Rewriting_subqueries The queries: SELECT * FROM t1 WHERE id NOT IN (SELECT id FROM t2); SELECT * FROM t1 WHERE NOT EXISTS (SELECT id FROM t2 WHERE t1.id=t2.id); Can be rewritten as: SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.id=table2.id WHERE table2.id IS NULL;
  8. Nevim jak to chodí na web zdarma, jak a kam se zadávaj SQL příkazy, a jak to vypadá. Díky za odpověď
  9. 1) Založ si příště nový téma, ať to tady je přehlednější 2) Existuje tu nástroj pro správu MySQL "phpMyAdmin" (Administrace/Nastavení/phpMyAdmin) Add 2): Za předpokladu, že trochu umíš PHP a SQL
  10. zkusil jsem to tedy pres JOIN, naslednym zpusobem: SELECT rd2_dokumenty.* FROM rd2_dokumenty LEFT JOIN rd2_zaznamy ON rd2_dokumenty.id_dokumentu = rd2_zaznamy.id_dokumentu WHERE (rd2_zaznamy.id_dokumentu) IS NULL ..to funguje, nicmene... Ja tenhle dotaz vypise vsechny dokumenty, ktere nemaji v tabulce rd2_zaznamy zadny zaznam. Ja vsak potrebuji, aby mi to vypsalo dokumenty, ktere nemaji v tabulce rd2_zaznamy zaznam od KONKRETNIHO UZIVATELE. Myslel jsem, ze bude stacit mirne pozmenit dotaz na: SELECT rd2_dokumenty.* FROM rd2_dokumenty LEFT JOIN rd2_zaznamy ON rd2_dokumenty.id_dokumentu = rd2_zaznamy.id_dokumentu WHERE (rd2_zaznamy.id_dokumentu AND rd2_zaznamy.id_uzivatele = '$uid') IS NULL ...to ale nefunguje, na tuto podminku uz to nereaguje. Nevite nekdo, jak ji do toho zakomponovat?
  11. ja bych to napsal spis takhle, ale nezkousel sem , jestli to opravdu funguje... ------------------ SELECT rd2_dokumenty.* FROM rd2_dokumenty LEFT JOIN rd2_zaznamy ON rd2_dokumenty.id_dokumentu = rd2_zaznamy.id_dokumentu WHERE rd2_zaznamy.id_dokumentu IS NULL AND rd2_zaznamy.id_uzivatele = '$uid';
  12. tak to, bohuzel, nejde... vysledkem neni zadny vypis IMHO se ty 2 podminky navzajem vylucuji, takze to ani nikdy nic vypsat nemuze, nevim...
  13. jasně, že se to tluče, ty se musíš ptát na id z tabulky, kde to je, tety rd2_dokumenty ne rd2_zaznamy. Tedy: SELECT rd2_dokumenty.* FROM rd2_dokumenty LEFT JOIN rd2_zaznamy ON rd2_dokumenty.id_dokumentu = rd2_zaznamy.id_dokumentu WHERE (rd2_zaznamy.id_dokumentu IS NULL) AND (rd2_dokumenty.id_uzivatele = '$uid'); jestli tam nic takového (rd2_dokumenty.id_uzivatele) není, tak to tam bude třeba dodělat.
  14. diky, uz jsem to vyresil nasledovne: SELECT * FROM rd2_dokumenty LEFT JOIN rd2_zaznamy ON ( ( rd2_dokumenty.id_dokumentu = rd2_zaznamy.id_dokumentu ) AND ( rd2_zaznamy.id_uzivatele = '$userID' ) ) WHERE ( ( (rd2_zaznamy.id_dokumentu) AND (rd2_zaznamy.id_uzivatele = '$userID') ) IS NULL ) AND rd2_dokumenty.stav_dokumentu = '$docState'

← Zpět na všechna témata