Temat: mysql distinct

Mam problem z wyciągnięciem 6 najnowszych newsów z bazy, każdy z innej kategorii po jednym.

robie takie zaptyanie i zwraca mi 6 newsów, każdy z róznej kategorii:

SELECT distinct * FROM `news` WHERE cat_id>'2' group by cat_id order by news_id desc limit 6


Problem mam z tym że w jednej kategorii zwraca mi starszego newsa, zamiast najnowszego.

Jak zmodyfikować to zapytanie aby działało to tak jak chcę?

To ma działać tak:
z pośród wielu kategorii, zapytanie ma zwrócić 6 najnowszych newsów ale po jednym najnowszym newsie z danej kategorii.

konto usunięte

Temat: mysql distinct

Jak zapisujesz w bazie datę publikacji to nic nie szkodzi na przeszkodzie, żeby ordera zrobić wg daty.
Powinno banglać.

order by date desc

Tajemniczy rekord 'news_id' do czego się odnosi ?

Temat: mysql distinct

to nie ma znaczenia czy wg daty czy id
najnowsze newsy zawsze mają id najwyższe tak jak data, więc nie ma różnicy czy wg daty czy id.

w jednej kategorii mam 2 newsy. Powinno zwrócic mi newsa z wyszym id, a zwraca mi w tej kategorii starszego newsa z niższym id.
A ma zwracac po jednym newsie z najwyższym id dla każdej kategorii.

wydaje mi się że on na początku na pałe pobiera 6 pierwszych lepszych rekordów z różnych kategorii a dopiero później wykonuje 'ordery by' na tym co już pobrał.Dawid Brzeziński edytował(a) ten post dnia 30.04.13 o godzinie 13:51

konto usunięte

Temat: mysql distinct

Dawid B.:
to nie ma znaczenia czy wg daty czy id
najnowsze newsy zawsze mają id najwyższe tak jak data, więc nie ma różnicy czy wg daty czy id.

w jednej kategorii mam 2 newsy. Powinno zwrócic mi newsa z wyszym id, a zwraca mi w tej kategorii starszego newsa z niższym id.
A ma zwracac po jednym newsie z najwyższym id dla każdej kategorii.

wydaje mi się że on na początku na pałe pobiera 6 pierwszych lepszych rekordów z różnych kategorii a dopiero później wykonuje 'ordery by' na tym co już pobrał.
Zgadza się, nie musisz mi takich rzeczy tłumaczyć ;)
Tylko, że

timestamp ->CURRENT_TIMESTAM

Zawsze warto zapisywać ;)
A co Ci var_dump mówi ?

Temat: mysql distinct

mam zapisywaną datę w timestamp również, tylko tak jak pisałem wcześniej
nie ma to znaczenia w tym przypadku bo id jest increment i data również jest rosnąca.
w obu przypadkach jest taki sam efekt.

Temat: mysql distinct

Dawid B.:
Mam problem z wyciągnięciem 6 najnowszych newsów z bazy, każdy z innej kategorii po jednym.

robie takie zaptyanie i zwraca mi 6 newsów, każdy z róznej kategorii:

SELECT distinct * FROM `news` WHERE cat_id>'2' group by cat_id order by news_id desc limit 6


Problem mam z tym że w jednej kategorii zwraca mi starszego newsa, zamiast najnowszego.

Jak zmodyfikować to zapytanie aby działało to tak jak chcę?

To ma działać tak:
z pośród wielu kategorii, zapytanie ma zwrócić 6 najnowszych newsów ale po jednym najnowszym newsie z danej kategorii.

Tak na szybko ...



SELECT * FROM `news`
WHERE news_id IN (

SELECT max(news_id) AS maxid
FROM `news`
WHERE cat_id > 2
GROUP BY cat_id

)

ORDER BY news_id DESC
LIMIT 6

Piotr Rusoł edytował(a) ten post dnia 30.04.13 o godzinie 16:16

Temat: mysql distinct

Dzięki, działa. Własnie o to mi chodziło.Dawid Brzeziński edytował(a) ten post dnia 30.04.13 o godzinie 17:42

Następna dyskusja:

Distinct dla pomijania wierszy




Wyślij zaproszenie do