Autor | Zpráva | ||
---|---|---|---|
Mustermann Profil * |
#1 · Zasláno: 15. 6. 2016, 10:46:54
Zdravím pánové, potřeboval bych poradit jak vypsat z následující tabulky unikátní hodnoty ve sloupcích hodnota1 a hodnota2
id | hodnota1 | hodnota2 | -------------------------------. 1 | hruška | jablko | 2 | třešeň | jablko | 3 | hruška | NULL | 4 | jablko | meloun | potřebuju vypsat následující: hruška, jablko, třešeň, meloun díky moc |
||
Keeehi Profil |
#2 · Zasláno: 15. 6. 2016, 11:06:21
Mustermann:
To zavání špatným návrhem tabulky. Nehezky se toho dá docílit takto SELECT hodnota1 AS hodnota FROM tabulka UNION SELECT hodnota2 AS hodnota FROM tabulka |
||
Mustermann Profil * |
jak tam ale naroubuju to GROUP BY? takhle mi to vypíše vše...
jak líp navrhnout tabulku v tomto případě? představte si, že na každém řádku máte jeden ovocný koktejl a máte 2 ingredience (hodnota1 a hodnota2) a já potřebuju vypsat všechny unikátní ingredience tak už jsem si naštudoval, že group by netřeba... ale stále mě nenapadá jak zlepšit návrh tabulky |
||
TomášK Profil |
#4 · Zasláno: 15. 6. 2016, 11:45:26
Vhodné řešení je rozdělit to na víc tabulek:
koktejly(id, nazev) , ingredience(id, nazev) a vazební tabulka koktejly_ingredience(koktejl_id, ingredience_id) , viz Některé časteji řešené dotazy pro MySQL - FAQ » Musíte pojmenovávat sloupce s indexem (jmeno1, jmeno2, jmeno3, …)
|
||
_es Profil |
#5 · Zasláno: 15. 6. 2016, 11:58:02
Mustermann:
„na každém řádku máte jeden ovocný koktejl a máte 2 ingredience (hodnota1 a hodnota2)“ [#4] rieši, okrem iných, už spomenutých nedostatkov, aj to, že môžu byť igrendiencie aj tri, štyri, päť, ..., alebo trebárs len jedna. |
||
Mustermann Profil * |
#6 · Zasláno: 15. 6. 2016, 12:00:56
v mém případě jsou vždy max 2 ingredience, je to jen příklad
|
||
Radek9 Profil |
Mustermann:
Je špatné se na tohle spoléhat. Nikdy nemůžeš vědět, jestli náhodou nenastane situace, kdy bys tam potřeboval ty ingredience třeba 3. A je hloupost tam přidávat další sloupec. Navíc ti tam takhle vzniká hromada duplicitních záznamů. A to ani nemluvíme o příkladu, kdy bys potřeboval tu ingredienci přejmenovat. Řešení přes 3 tabulky je optimální. |
||
Kajman Profil |
#8 · Zasláno: 16. 6. 2016, 13:43:06
|
||
Keeehi Profil |
#9 · Zasláno: 17. 6. 2016, 01:20:12
Kajman:
Opravdu? Právě tím jsem si nebyl jistý a původně jsem je tam měl. Tak jsem si to otestoval bez nich a duplicity tam nebyly. Tak jsem to raději ještě konzultoval s manuálem a tam bylo přímo napsáno, že UNION odstraňuje duplicity. Pro zachování duplicit by bylo potřeba použít UNION ALL. |
||
Časová prodleva: 3 dny
|
|||
Kajman Profil |
#10 · Zasláno: 20. 6. 2016, 08:20:35
Keeehi:
Máš pravdu, union to zařídí sám i bez distinct. |
||
Časová prodleva: 9 let
|
0