Portál AbcLinuxu, 27. dubna 2024 04:33


Dotaz: Dvojtý výběr z jedné tabulky

19.8.2008 11:07 Jiří Kočí
Dvojtý výběr z jedné tabulky
Přečteno: 432×
Odpovědět | Admin
Jsem trochu v koncích se svými znalostmi...

Mám 2 tabulky

USERS kde je id a jmeno (obsahuje id a jména uživatelů kteří mohou být za A autorem článku, ale za B současně i redaktorem) CLANKY kde je id jmeno_autora jmeno_redaktora (odkazuje na jméno autora nebo redaktora v tab. users)

Každý článek má záznam id autora a id redaktora který článek schvaluje.

No a můj problém je jak postavit dotaz který z tabulky users vydoluje dvě jména... potřebuju něco ve smyslu

select * from clanky,users where clanky.jmeno_autora = users.id (zajímá mě sloupec users.jmeno - až sem je to OK ale jak dál?) and clanky.jmeno_redaktora = users.id (zajímá mě users.jmeno - jenže jiné než to předtím :) )

nefunguje to :-) protože se ptám 2x na stejnej sloupec?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

19.8.2008 11:09 Jiří Kočí
Rozbalit Rozbalit vše Re: Dvojtý výběr z jedné tabulky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Za odpovědi a náměty pochopitelně děkuji
19.8.2008 11:29 Jan Kratochvíl | skóre: 13
Rozbalit Rozbalit vše Re: Dvojtý výběr z jedné tabulky
Myslím, že se to dělá takto: select * from clanky,users A, users B where clanky.jmeno_autora = A.id and clanky.jmeno_redaktora = B.id

Konkrétní syntax se může lišit podle SQL verze.

Honza
19.8.2008 22:11 MaZ
Rozbalit Rozbalit vše Re: Dvojtý výběr z jedné tabulky
CREATE TABLE users (id int4, jmeno varchar(100));
CREATE TABLE clanky (id int4, id_autor int4, id_redaktor int4);

INSERT INTO users (id, jmeno) VALUES (1, 'user1');
INSERT INTO users (id, jmeno) VALUES (2, 'user2');
INSERT INTO users (id, jmeno) VALUES (3, 'user3');
INSERT INTO users (id, jmeno) VALUES (4, 'user4');

INSERT INTO clanky (id, id_autor, id_redaktor) VALUES (1,1,2);
INSERT INTO clanky (id, id_autor, id_redaktor) VALUES (2,3,2);
INSERT INTO clanky (id, id_autor, id_redaktor) VALUES (3,3,4);
INSERT INTO clanky (id, id_autor, id_redaktor) VALUES (4,3,2);

SELECT cl.id AS cislo_clanku, autor.jmeno AS autor, redaktor.jmeno AS redaktor
FROM clanky cl
JOIN users autor ON autor.id=cl.id_autor
JOIN users redaktor ON redaktor.id=cl.id_redaktor

--nebo

SELECT cl.id AS cislo_clanku, autor.jmeno AS autor, redaktor.jmeno AS redaktor
FROM clanky cl, users autor, users redaktor
WHERE  autor.id=cl.id_autor
AND  redaktor.id=cl.id_redaktor

--vysledek
Total query runtime: 0 ms.
4 rows retrieved.

cislo_clanku   autor    redaktor
1              "user1"  "user2"
2              "user3"  "user2"
3              "user3"  "user4"
4              "user3"  "user2"


BTW hvězdička za slovem SELECT je ZLO
22.8.2008 08:17 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: Dvojtý výběr z jedné tabulky
Odpovědět | | Sbalit | Link | Blokovat | Admin
už jsem zde na podobný dotaz odpovídal před týdnem ...

http://www.abclinuxu.cz/forum/show/234907

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.