MySQL řádek k MAX
Ahoj. Mám tabulku listing_table_products.
A v ní mám dva sloupce. První se jmenuje products_tax_class druhý se jmenuje final_price.
Můj dotaz je, jak zobrazím maximální final_price a k ní příslušné products_tax_class_id ?
Zkoušel jsem toto:
select
p.products_tax_class_id as mincena_tax_id ,MAX(final_price) as maxcena
from listing_table_products p
group by p.products_tax_class_id
Ale záznam v řádku si nekoresponduje.
Podobně, jak jsem navrhoval zde:
http://pc.poradna.net/q/view/1056703-sql-dotaz-men si-rozcvicka
Udělej join té tabulky na sebe.
Nebo zkouším to i takhle:
Mám tento dotaz:
SELECT products_tax_class as tax_min
from listing_table_products p left join listing_table_products_name pd
on p.products_id=pd.products_id
left join listing_table_manufacturers m on p.products_id=m.products_id
order by pd.products_name where final_price = min(final_price)
A tady to hlásí:
Could not run query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where final_price = min(final_price)' at line 1
Musí fungovat tenhle základ:
SELECT min(p.final_price),pd.products_tax_class
from listing_table_products p left join listing_table_products pd
on p.products_id=pd.products_id
Pak na něj nabal ostatní (name apod.).
EDIT:
Určitě tohle:
SELECT min(p.final_price),pd.products_id
from listing_table_products p left join listing_table_products pd
on p.products_id=pd.products_id
Díky za radu. Zkusil jsem spodní SQL a hlásí tuhle nepříjemnost:
Could not run query: Can't reopen table: 'p'
Ta TABULKA listing_table_products je temporary ?
Ano.
Aha, tak tohle jsem ještě neřešil. Zkus odkaz :
http://stackoverflow.com/questions/11384045/select -all-rows-with-maximum-value-of-a-temporary-table
Každopádně se zaměř zatím jen na výběr minimální ceny a k ní id. Všechno ostatní pak doplníš postupně.
Ha !
SELECT MAX(value) INTO @max
FROM test;
SELECT *
FROM test
WHERE value = @max;
Otestuju to takhle prasácky.
Ty chceš jako JEDEN ten řádek?
Už jsem to popisoval.
jak zobrazím maximální final_price a k ní příslušné products_tax_class_id ?
Tento jeden řádek, nic víc.
Ale jde to pracně přes více samostatných dotazů.
Takže to asi označím jako pořešené, až to otestuju.
Ano, takhle jsi to popisoval - ale to jsem pochopil tak jak jsi to napsal a tak jak jsem mozna pochopit chtel , ale já bych si představil pro to co chceš popis tenhle:
Jak jako nekoresponduje? Podle čeho to grupuješ s tim to koresponduje.
Problém je v tom, s čím to grupuju?
Zkusil jsem to bez group by a už to hlásí:
Could not run query: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Podle čeho to mám teda zagrupovat
Žeby konečně mysql začalo hlásit tohle jako chybu, bylo na čase.
Jestli je to to, co si myslim, tak nemužeš mít agregační funkci COUNT(*), MAX v selectu + sloupec(e) bez agregační funkce bez klauzule GROUP BY ve kterém jsou vyjmenovány všechny sloupec(e), které máš bez agregační funkce. Neb to nemá smysl
select count(b), a from table; Pochopitelně nejde, neb to nemá smysl.
Máš tam dva sloupce ne? Class_id A cenu.
select max(cena), class_id from table group by class_id.
Raději uved 10 řádku z tabulky a jakej chceš výsledek jinak se nikam nedoberem. Pořád si nevysvětlil, co to znamená nekoresponduje.
je to ale kravina, pretoze rovnakych maximalnych final price moze byt viac. niekde si urobil chybu v navrhu DB.
a este si nepovedal kolko riadkov zo svojho vystupu ocakavas. ci to ma byt jedna maximalna final price, alebo viacero za nejaky produkt. ak viacero, tak treba definovat podla coho ich chces zistit. najlepsie sem napisat co mas v tabulke a co by si chcel dostat zo selectu.