Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Jednoduchý SQL dotaz (pro spidera)

Zdravím vás bratři ve zbrani :-D .

Mám pro vás jasný úkol. Určitě to není nic složitého.

Mám jedinou tabulku, která má tyto hodnoty:

[http://pc.poradna.net/file/view/14837-obr2-png]

Mám tento jednoduchý SQL dotaz:

SELECT products_id, additional_name, min( additional_value ) , case when additional_value regexp '^[0-9]' then max( additional_value ) else additional_value end as val, additional_text
FROM products_additional
WHERE TYPE = 'ADI'
GROUP BY additional_name
ORDER BY additional_name, additional_value

Výsledkem dotazu je toto:

[http://pc.poradna.net/file/view/14838-obr1-png]

Nejedná se o nic složitého, přesto se pro připomenutí rozepíšu.
Dotaz vytáhne hodnoty a pokud je více hodnot stejných, tak vytáhne limitní stavy.

Tedy minimum a maximum. To vidíme správně u hodnot spotřeba a Váha.

Jenomže já hlava děravá zapomněl na to, že mohou tyto hodnoty nabývat také nenumerických (nečíselných hodnot).
A v takovém případě, kdy to není číslo to potřebuji všechno vypsat po jednom - "normálně" všechny hodnoty.

Výsledek si k příkladu představuji tak, že zatímco Váha a spotřeba bude po jednom řádku (minimum a maxim - je to číslo),
tak rozlišení budou uvedena všechna (ve sloupečku val).

Děkuji za čas !

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
urob union dvoch selectov. jedno ti zgrupuje take, ktorych hodnoty su ciselne a druhe len surovo vyp…
wam_Spider007 19.07.2013 12:56
wam_Spider007
Dobře. A zeptám se, nemá tento union ten typ bugu, že zatímco horní část dotazu vytáhne nečíselné st…
Flash_Gordon 19.07.2013 12:58
Flash_Gordon
ak sa bojis duplicit, tak nahrad UNION ALL za UNION.
wam_Spider007 19.07.2013 13:01
wam_Spider007
Ještě poslední dotaz (SQL dotaz :-) ) : SELECT products_id, additional_name, min( additional_value…
Flash_Gordon 19.07.2013 13:36
Flash_Gordon
do unionu nie je mozne vlozit klauzulu order by. urob to dvojkrokovo ... z toho union selectu sprav… poslední
wam_Spider007 19.07.2013 14:06
wam_Spider007

urob union dvoch selectov. jedno ti zgrupuje take, ktorych hodnoty su ciselne a druhe len surovo vypise tie, ktore su neciselne. opat som tam dal funkciu isnumeric, ktora viem, ze v mysql nie je. nahrad ju ekvivalentom (nechcelo sa mi ho hladat).

SELECT products_id, additional_name, min( additional_value ) ,  max( additional_value ) as val, additional_text
FROM products_additional
WHERE TYPE = 'ADI' AND ISNUMERIC(additional_value) = 1
GROUP BY additional_name

UNION ALL

SELECT products_id, additional_name, additional_value,  additional_value as val, additional_text
FROM products_additional
WHERE TYPE = 'ADI' AND ISNUMERIC(additional_value) = 0

Ještě poslední dotaz (SQL dotaz :-) ) :

SELECT products_id, additional_name, min( additional_value ) , case when additional_value regexp '^[0-9]' then max( additional_value ) else additional_value end as val, additional_text FROM products_additional WHERE TYPE = 'ADI' AND products_id IN (61501, 61512, 61507, 61500, 61511, 61509, 61510) AND (additional_value regexp( '^[0-9]+$') = 1) GROUP BY additional_name ORDER BY additional_name, additional_value UNION SELECT products_id, additional_name, min( additional_value ) , case when additional_value regexp '^[0-9]' then max( additional_value ) else additional_value end as val, additional_text FROM products_additional WHERE TYPE = 'ADI' AND products_id IN (61501, 61512, 61507, 61500, 61511, 61509, 61510) AND (additional_value regexp( '^[0-9]+$') = 0) GROUP BY additional_name ORDER BY additional_name, additional_value

Je korektní, ale hlásí chybu: Incorrect usage of UNION and ORDER BY

Jak z tohoto ven?

Zpět do poradny Odpovědět na původní otázku Nahoru