SQL - pomoc s dotazem

SQL - pomoc s dotazem
« kdy: 25. 10. 2013, 10:29:03 »
Ahoj,

potřeboval bych pomoct s SQL dotazem s následujícíma podmínkama:

Mam tabulku v ní dva sloupce A a B s textem. Potřeboval bych do jednoho výstupu dostat kombinaci A a B seřazenou podle abecedy. Problém je ten, že A a B budou v některých případech obsahovat to samý, v tom případě tam chci takový záznam jenom jednou.

Jak si s tím poradit? Je to nějaký jednoduchý postup? Díky!


DK

Re:SQL - pomoc s dotazem
« Odpověď #1 kdy: 25. 10. 2013, 10:46:52 »
co myslis kombinaci A a B? spojene sloupce?

tommm

Re:SQL - pomoc s dotazem
« Odpověď #2 kdy: 25. 10. 2013, 11:04:28 »
http://www.w3schools.com/sql/

Vim, ze to neni prima odpoved. Ale jak to bylo s rybou a rybarenim? :)

ASTS

Re:SQL - pomoc s dotazem
« Odpověď #3 kdy: 25. 10. 2013, 11:41:15 »
Třeba něco jako
SELECT A,B FROM TABULKA GROUP BY A SORTED BY ASC;

Ahoj,

potřeboval bych pomoct s SQL dotazem s následujícíma podmínkama:

Mam tabulku v ní dva sloupce A a B s textem. Potřeboval bych do jednoho výstupu dostat kombinaci A a B seřazenou podle abecedy. Problém je ten, že A a B budou v některých případech obsahovat to samý, v tom případě tam chci takový záznam jenom jednou.

Jak si s tím poradit? Je to nějaký jednoduchý postup? Díky!

ASTS

Re:SQL - pomoc s dotazem
« Odpověď #4 kdy: 25. 10. 2013, 11:42:46 »
Jo a pokud bys ty duplicity chtěl odstranit i v druhým sloupci, tak to povede na vnořený SELECT.

Třeba něco jako
SELECT A,B FROM TABULKA GROUP BY A SORTED BY ASC;

Ahoj,

potřeboval bych pomoct s SQL dotazem s následujícíma podmínkama:

Mam tabulku v ní dva sloupce A a B s textem. Potřeboval bych do jednoho výstupu dostat kombinaci A a B seřazenou podle abecedy. Problém je ten, že A a B budou v některých případech obsahovat to samý, v tom případě tam chci takový záznam jenom jednou.

Jak si s tím poradit? Je to nějaký jednoduchý postup? Díky!


Re:SQL - pomoc s dotazem
« Odpověď #5 kdy: 25. 10. 2013, 12:04:46 »
Syntax pro MySQL je nasledujici:

SELECT DISTINCT A,B FROM tabulka ORDER BY A,B

Pro ostatni sql varianty je potreba dotaz upravit dle jejich konvenci.

Re:SQL - pomoc s dotazem
« Odpověď #6 kdy: 25. 10. 2013, 13:38:25 »
A když píše, že to potřebuje do jednoho výstupu (pochopil jsem do jednoho sloupce) nepotřebuje spíš toto?

select distinct * from (select A from <table> union select B from <table>) t order by A;

DK

Re:SQL - pomoc s dotazem
« Odpověď #7 kdy: 25. 10. 2013, 13:43:58 »
jholas: ja to pochopil tak, ze A i B muzou obsahovat stejne hodnoty a v tom pripade je neslucovat, takze tam pridat jeste podminku, ze A != B v selectech u unionu

Re:SQL - pomoc s dotazem
« Odpověď #8 kdy: 25. 10. 2013, 13:53:37 »
jholas: ja to pochopil tak, ze A i B muzou obsahovat stejne hodnoty a v tom pripade je neslucovat, takze tam pridat jeste podminku, ze A != B v selectech u unionu

není lehký pořádně zformulovat zadání, tak aby bylo jednoznačný :-)

ale bylo tam něco takovýho, takže myslím, že se to nemá opakovat:
Citace
A a B budou v některých případech obsahovat to samý, v tom případě tam chci takový záznam jenom jednou

Jinak mam pocit, že díky tomu unionu už nemusí být distinct.

Re:SQL - pomoc s dotazem
« Odpověď #9 kdy: 27. 10. 2013, 09:37:01 »
Já jsem si myslel, že to píšu docela jasně, ale asi ne. :-D Každopádně díky všem za rady, SQL syntaxi jakž-takž znám, akorát jsem nevěděl, jak spojit výstup ze dvou sloupců do jednoho. Hodnoty samostatně v A a samostatně v B budou vždy unikátní. Co jsem potřeboval poradit, byl operátor UNION, jak radí jholas.

Z dokumentace jsem potom našel:
Citace
The UNION operator selects only distinct values by default. To allow duplicate values, use the ALL keyword with UNION.

Takže to rovnou řeší moje oba dva požadavky. Ještě jednou díky za radu!