Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Najnowsze rekordy
harryk
post 5.04.2006, 09:43:13
Post #1





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.04.2005

Ostrzeżenie: (0%)
-----


Mam tabele:

Kod
id | rodzic_id | nazwa | data


Chce wyświetlić po 5 najnowszych rekordów z tej tabeli, mając danych 3 rodziców (np. o rodzic_id=3, rodzic_id=4, rodzic_id=5).

Dla jednego wiadomo:

  1. SELECT *
  2. FROM tabela
  3. WHERE rodzic_id=3 ORDER BY DATA DESC LIMIT 5


Dla dwóch czy trzech - nie wiem jak to zrobić.. worriedsmiley.gif
Go to the top of the page
+Quote Post
dyktek
post 5.04.2006, 09:45:01
Post #2





Grupa: Zarejestrowani
Postów: 240
Pomógł: 0
Dołączył: 18.01.2004
Skąd: rzeszów / kraków

Ostrzeżenie: (0%)
-----


  1. SELECT *
  2. FROM tabela
  3. WHERE rodzic_id=3 AND rodzic_id = 4 AND rodzic_id = 5
  4. ORDER BY DATA DESC LIMIT 5
Go to the top of the page
+Quote Post
harryk
post 5.04.2006, 10:29:12
Post #3





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.04.2005

Ostrzeżenie: (0%)
-----


Zupełnie nie o to chodziło... winksmiley.jpg

Chce, zeby to wybrało mi: 5 najnowszych z rodzic_id=3, 5 najnowszych z rodzic_id=4, 5 najnowszych z rodzic_id=5
Go to the top of the page
+Quote Post
Vogel
post 5.04.2006, 10:43:49
Post #4





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

Ostrzeżenie: (0%)
-----


@dyktek: tak jest lepiej:
  1. SELECT *
  2. FROM tabela
  3. WHERE rodzic_id IN (3, 4, 5)
  4. ORDER BY DATA DESC LIMIT 5



@harryk
  1. SELECT *
  2. FROM tabela
  3. WHERE rodzic_id = 3
  4. ORDER BY DATA DESC LIMIT 5
  5. UNION
  6. SELECT *
  7. FROM tabela
  8. WHERE rodzic_id = 4
  9. ORDER BY DATA DESC LIMIT 5
  10. UNION
  11. SELECT *
  12. FROM tabela
  13. WHERE rodzic_id = 5
  14. ORDER BY DATA DESC LIMIT 5


--------------------
Go to the top of the page
+Quote Post
harryk
post 5.04.2006, 13:03:50
Post #5





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.04.2005

Ostrzeżenie: (0%)
-----


hmmm.. nie działa.

Czy to moze byc wina wersji mysql? (bodajże 3.23.58)

edit:

Na 4.0.24 też nie działa, wyskakuje błąd:
Kod
#1221 - Wrong usage of UNION and ORDER BY


Kiedy jednak wyrzuce na chwile wszystkie ORDER BY chodzi, ale nieporządanie: pobiera 5 rekordów tylko z pierwszego zapytania.

Ten post edytował harryk 5.04.2006, 13:14:24
Go to the top of the page
+Quote Post
elessar
post 5.04.2006, 13:15:43
Post #6





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 12.05.2003
Skąd: Mikołów

Ostrzeżenie: (0%)
-----


tak. union jest dostepne dopiero od wersji 4.


--------------------
..::elessar::..
Go to the top of the page
+Quote Post
Adiasz
post 5.04.2006, 14:29:16
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 28.02.2004

Ostrzeżenie: (0%)
-----


wpiec pozostaje w petelce jechac po rodzic_id i dolanczac wyniki przez array_merge i wyjdzie na to samo
Go to the top of the page
+Quote Post
spenalzo
post 5.04.2006, 18:46:25
Post #8





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


  1. SELECT *
  2. FROM tabela
  3. WHERE rodzic_id IN (3, 4, 5) GROUP BY id%5,rodzic_id ORDER BY DATA


Btw, data to chyba zastrzeżone słowo MySQL, sprawdz w manualu.

Ten post edytował spenalzo 5.04.2006, 18:47:11


--------------------

Go to the top of the page
+Quote Post
Vogel
post 5.04.2006, 18:48:59
Post #9





Grupa: Zarejestrowani
Postów: 402
Pomógł: 0
Dołączył: 20.01.2003

Ostrzeżenie: (0%)
-----


zastrzeone jest "date" winksmiley.jpg


--------------------
Go to the top of the page
+Quote Post
spenalzo
post 5.04.2006, 18:50:43
Post #10





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Okazuje sie, że jednak nie tongue.gif

http://dev.mysql.com/doc/refman/4.1/en/reserved-words.html
na samym dole przed komentarzami winksmiley.jpg


--------------------

Go to the top of the page
+Quote Post
harryk
post 6.04.2006, 09:41:38
Post #11





Grupa: Zarejestrowani
Postów: 16
Pomógł: 0
Dołączył: 20.04.2005

Ostrzeżenie: (0%)
-----


Wszystko gra, żeby jednak wynieść coś z tej porady może mi ktoś powiedzieć na jakiej zasadzie to działa (podejrzewam, że to zapis GROUP BY id%5,rodzic_id).

edit: Chyba sie za szybko ucieszyłem. Jednak nie działa jak trzeba, nie pobiera najnowszych, a właściwie jakoś tak dość losowo... :/

Ten post edytował harryk 7.04.2006, 19:40:35
Go to the top of the page
+Quote Post
Yacho
post 8.04.2006, 20:44:41
Post #12





Grupa: Zarejestrowani
Postów: 148
Pomógł: 0
Dołączył: 16.06.2003

Ostrzeżenie: (0%)
-----


Speniu tez bym prosil o wyjasnienie smile.gif


--------------------
-=Yacho=-

nospor -> trzymaj sie i nie dajcie sie !
Go to the top of the page
+Quote Post
spenalzo
post 9.04.2006, 20:25:03
Post #13





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Tak szczerze? To nie wiem biggrin.gif
Taki sam problem był dwa lata temu na forum poruszany, przypomniałem go sobie, zmodyfikowałem i wrzuciłem winksmiley.jpg A tyle co wiem, to działa on na zasadze modyfikatora w GROUP BY. Jest to ciekawe rozwiązanie problemu, tym bardziej że w manualu nie znalażłem ani słowa o tkim rozwiązaniu smile.gif



Cytat
edit: Chyba sie za szybko ucieszyłem. Jednak nie działa jak trzeba, nie pobiera najnowszych, a właściwie jakoś tak dość losowo... :/

Spróbuj:
  1. ... ORDER BY rodzic_id,id DESC

a jak nadal nie, to wykaż troche inwencji i spróbuj samemu zmodyfikować order by tongue.gif

Ten post edytował spenalzo 9.04.2006, 20:26:12


--------------------

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 11:38