Autor Zpráva
Prefin
Profil
Ahoj všichni.
Prosím o radu s nefunkčním dotazem po přechodu na PHP 7 (localhost).
SELECT DISTINCT jmeno FROM data ORDER BY datum ASC
Po přechodu na poslední LAMP (PHP 7, Mysql 5.7.12-0ubuntu1.1) začal chybovat (před tím v pohodě):
Expression #1 of ORDER BY clause is not in SELECT list, references column 'hovory.data.datum' which is not in SELECT list; this is incompatible with DISTINCT
Zkoušel jsem všechno možné ale bezvýsledně.

Díky za radu.
xROAL
Profil
Nemôžeš výsledky zoradiť podľa poľa datum, keď ich zoskupuješ podľa pola jmeno.
Pri jednej hodnote jmeno môže byť viac dátumov a MySQL nevie, ktorý použiť pre zoradenie.

Skús napr. takto:
SELECT jmeno FROM data GROUP BY jmeno ORDER BY MAX(datum) ASC
Martin2
Profil *
Prefin:
Po přechodu na poslední LAMP (PHP 7, Mysql 5.7.12-0ubuntu1.1) začal chybovat
Ten problém nesouvisí s PHP7, ale s tím MySQL5.7, respektive s jeho konfigurací.

Konkrétně je to SQL mód ONLY_FULL_GROUP_BY, který neumožňuje použití ORDER BY na neagregovaných sloupcích. Dává to jistý smysl, protože DISTINCT zahazuje duplicitní řádky, ale v nespecifikovaném pořadí – seřazení podle nezařazeného sloupce by tak nemělo deterministický výsledek. Použití GROUP BY, jak naznačuje xROAL je jedna (pomalejší) alternativa, pokud nezáleží, podle kterého řádku skupiny se výsledek seřadí, šla by v ORDER BY použít funkce ANY_VALUE(datum)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0