Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] sortowanie
Dynuel
post
Post #1





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


nie wiem jak tytuł nazwać.. z tym problemem mecze sie już z tydzień...

mam taką tabelę:
  1. id, duplikat, DATA, tytul
  2. 1, 0, 2007-11-01, coś tam 1
  3. 2, 1, 2007-11-02, coś tam 2
  4. 3, 0, 2007-11-03, cos tam 3
  5. 5, 1, 2007-11-04, coś tam 4
  6. 6, 0, 2007-11-05, cos tam 5
  7. 7, 1, 2007-11-06, coś tam 6
  8. 9, 0, 2007-11-07, coś tam 7

i teraz musze zrobić tak by wyświetliło mi normalnie WSZYSTKIE wpisy z polem DUPLIKAT = 0, ale za to tylko po jednym najmłodszym (według pola DATA) wpisie z polem DUPLIKAT != 0, że np. tylko po jeden najmłodszy (wdług DATA) wpis ze wszystkich wpisów z DUPLIKAT = 1, również tylko jeden najmłodszy z wpisów z DUPLIKAT = 2 itd

Ten post edytował Dynuel 3.12.2007, 22:14:27


--------------------
Go to the top of the page
+Quote Post
gutek84
post
Post #2





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 9.10.2007
Skąd: Morąg

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


select * from tabela where duplikat like "0"
union
select * from tabela where duplikat like 1 and date=(select min(date) from tabela where duplikat=1)
union
.
.
.
select * from tabela where duplikat like n and date=(select min(date) from tabela where duplikat=n)

a zapytanie mozesz wygenerowac w php petla poprzez podanie jej wartosci np. 
$w=mysql_query(" select max(duplikat) from tabela");
$wart=mysql_fetch_row($w)
dalej ,
for ($i=0;$i<$wart[0];$i++){
If($i=0)
$q="select * from tabela where duplikat='".$i."' and date=(select min(date) from tabela where duplikat='".$i."');
If($i<$wart[0])
$q.="union select * from tabela where duplikat='".$i."' and date=(select min(date) from tabela where duplikat='".$i."');
}

mozesz sprobowac zrobic cos w tym stylu nie wiem czy zadziala. Pisane z glowy, moga byc bledy!!!
pozd
Go to the top of the page
+Quote Post
Dynuel
post
Post #3





Grupa: Zarejestrowani
Postów: 113
Pomógł: 0
Dołączył: 27.12.2003

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


z dumą mogę powiedzieć że w końcu to rozwiązałem wczoraj D

  1. ( SELECT * FROM materialy WHERE duplikat = 0 )
  2.  
  3. UNION
  4.  
  5. ( SELECT * FROM ( SELECT * FROM materialy WHERE duplikat != 0 ORDER BY DATA DESC ) AS tablica GROUP BY tablica.duplikat )
  6.  
  7. ORDER BY DATA DESC


to zwraca mi wszystkie wpisy z DUPLIKAT = 0 oraz tylko po jednym (najnowszym) wpisie z DUPLIKAT != 0, a potem w php już tylko sprawdzam czy DUPLIKAT != 0 i jeżeli tak to doczytuje pozostałe elementy z taką sama wartością DUPLIKAT nadając im styl css


--------------------
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 Aktualny czas: 21.08.2025 - 06:39