Autor | Zpráva | ||
---|---|---|---|
ciba Profil * |
#1 · Zasláno: 14. 4. 2005, 16:28:18
ahoj, prosím o radu,
mám dvě tabulky, jedna obsahuje informace o dokumentech, druhá o uživatelích. V tabulce 'dokumenty' mám pole "vystavil" a "schválil". Obě pole se odkazují na kód uživatele z tabulky 'uživatelé'. Dá se jedním dotazem načíst jméno a příjmení jak toho, kdo dokument vystavil, tak toho, kdo ho schvaluje ? Tedy mohou být jakesi dva JOINY (dokumenty.vystavil=uzivatele.kod) a (dokumenty.schvalil=uzivatele.kod) ??? vypadá to nefunkčně :) díky Petr |
||
Charlie Profil |
#2 · Zasláno: 14. 4. 2005, 16:31:46
jasne,
SELECT * from uzivatele u, dokumenty d, WHERE d.vystavil = u.kod AND d.schvalil = u.kod |
||
ciba Profil * |
#3 · Zasláno: 14. 4. 2005, 16:37:33
díky, vypadá to dost zajímavě na to, aby to mohlo fungovat :)
tak ne, trochu jsem to upravil "na skutečnost", ale nelibi se mu syntaxe ... :( You have an error in your SQL syntax near 'WHERE d.vystavil = u.username AND d.schvalovatel = u.username LIMIT 0, 30' at line 3 |
||
ciba Profil * |
#4 · Zasláno: 14. 4. 2005, 16:39:23
aha, ta carka za dokumenty d se mu nelíbila ...
v jakém formátu je ale odpověď ? používám mysql_fetch_array ... |
||
Charlie Profil |
#5 · Zasláno: 14. 4. 2005, 16:39:30 · Upravil/a: Charlie
y d, W- tam nema bejt ta carka |
||
Charlie Profil |
#6 · Zasláno: 14. 4. 2005, 16:41:54
v jakém formátu je ale odpověď
normalne, dostanes pole: $array['username'], $array['schvalovatel'].... |
||
ciba Profil * |
#7 · Zasláno: 14. 4. 2005, 16:46:34
takhle ale dostávám ty záznamy, kde se vystavil a schvlovatel shoduje, já bych potřeboval načíst něco jako schvalovatel.jmeno, schvalovatel.prijmeni, vystavil,jmeno a vystavil.prijmeni, kdy to neudelal obojí jeden člověk, ale různí uživatelé ...
|
||
Charlie Profil |
#8 · Zasláno: 14. 4. 2005, 17:31:41
aha, tak s tim ti neporadim
|
||
ciba Profil * |
#9 · Zasláno: 14. 4. 2005, 17:33:58
nevadí, díky za snahu :)
|
||
printf Profil * |
#10 · Zasláno: 15. 4. 2005, 17:08:30
těm shodnejm názvum se musí dát alias (nebo jak se tomu říká). Třeba takhle:
SELECT schvalovatel.jmeno AS sjmeno, schvalovatel.prijmeni AS sprijmeni, vystavil.jmeno AS vjmeno, vystavil.prijmeni AS vprijmeni FROM ... |
||
Honza Hučín Profil |
#11 · Zasláno: 15. 4. 2005, 18:21:09
Myslím, že to chápu. Potřebuješ propojit tabulku "dokumenty" do tabulky "uzivatele" dvakrát. To lze, uvedeš dvakrát tabulku uzivatele, akorát pokaždé s jiným aliasem. Viděl bych to takhle:
SELECT a.prijmeni as schvalil_prijmeni, b.prijmeni as vystavil_prijmeni FROM uzivatele as a, uzivatele as b, dokumenty WHERE a.kod=dokumenty.schvalil And b.kod=dokumenty.vystavil; Propojení pomocí JOINů je samozřejmě rychlejší, ale takhle je to zase přehlednější. |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0