Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> group by?
kicaj
post 26.11.2003, 15:09:14
Post #1





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Moja tabela
Kod
id - opis - nid

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

1 - qaz  - 1

2 - wsx  - 2

3 - edc  - 1

4 - rfv  - 3

5 - tgb  - 1

6 - yhn  - 5


Chcem wyswietlic tak zeby nie powtarzaly sie rekordy o takim samym 'nid' i posortowac wg pola 'data' (typ datetime).
W tym przypadku powinno wyswietlic 4 rekordy, od najnowszego do najstarszego.
Jak skonstruowac takie zapytanie MySQL?


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
spenalzo
post 26.11.2003, 15:55:12
Post #2





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

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


[sql:1:2e1581bf9f]SELECT DISTINCT nid, id, opis FROM tabela ORDER BY data[/sql:1:2e1581bf9f]


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

Go to the top of the page
+Quote Post
kicaj
post 27.11.2003, 14:44:47
Post #3





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Hmm ja mam cos takiego
[sql:1:f2e92eec8e]SELECT * FROM tabela GROUP BY nid ORDER BY data DESC
[/sql:1:f2e92eec8e] dobrze bo chyba mi grupuje, tzn wyswietla tylko tyle wiersz ile jest roznych 'nid' - czyli dobrze, ale wyswietla pierwsze dodane, a nie jak chcialem wedlug najnowszych


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
kicaj
post 27.11.2003, 20:17:37
Post #4





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


...dobra! wszystko do nowa!

Moja baza z danymi
[sql:1:1a76a3b02b]CREATE TABLE `mcz_post` (
`id` int(11) NOT NULL auto_increment,
`temat` varchar(75) NOT NULL default '',
`post` text NOT NULL,
`data` datetime default NULL,
`id_forum` int(11) NOT NULL default '0',
`id_temat` int(11) NOT NULL default '0',
`id_nick` int(11) NOT NULL default '0',
`nick` varchar(10) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) TYPE=MyISAM

INSERT INTO `mcz_post` VALUES (1, 'Pierwszy temat', 0x636f732074616d, '2003-11-25 20:40:43', 4, 1, 1, 'kicaj_');
INSERT INTO `mcz_post` VALUES (2, 'Drugi temat', 0x776574647366, '2003-11-25 20:41:59', 4, 2, 1, 'kicaj_');
INSERT INTO `mcz_post` VALUES (3, 'Trzeci temat', 0x737367666773646667, '2003-11-25 20:42:53', 4, 3, 1, 'kicaj_');
INSERT INTO `mcz_post` VALUES (4, 'Odpowiedz nr 1 do Pierwszy temat', '', '2003-11-25 20:44:17', 4, 1, 1, 'kicaj_');
INSERT INTO `mcz_post` VALUES (5, 'Odpowiedz nr 2 do Drugi Temat', '', '2003-11-25 20:50:45', 4, 2, 1, 'kicaj_');
INSERT INTO `mcz_post` VALUES (6, 'Odpowiedz nr 3 dla Trzeci temat', '', '2003-11-25 20:52:26', 4, 3, 1, 'kicaj_');
INSERT INTO `mcz_post` VALUES (7, 'Odpowiedz nr 4 do Pierwszy temat', 0x646a6b6c736a64666b, '2003-11-25 20:53:25', 4, 1, 1, 'kicaj_');
INSERT INTO `mcz_post` VALUES (8, 'Czwarty temat', 0x66736466, '2003-11-25 21:54:14', 4, 8, 1, 'kicaj_');
INSERT INTO `mcz_post` VALUES (9, 'Odpowiedz nr 5 do Trzeci temat', '', '2003-11-27 14:42:34', 4, 3, 1, 'kicaj_');[/sql:1:1a76a3b02b]

Jesli 'id' jest rowne z 'id_temat' to jest to pierwszy post (temat), jezeli 'id' nie jest rowne z 'id_temat' to jest to post (odpowiedz) do tematu rownemu 'id_temat' smile.gif

I chcem miec taki efekt:

Kod
2003-11-27 14:42:34 | Odpowiedz nr 5 do Trzeci temat

2003-11-25 21:54:14 | Czwarty temat

2003-11-25 20:53:25 | Odpowiedz nr 4 do Pierwszy temat

2003-11-25 20:52:26 | Odpowiedz nr 3 dla Trzeci temat


Jasniej nie potrafie, przyklad jest na tym forum! Lista tematow najswiezszy u gory, zboku data ostatniej odpowiedzi!


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
kicaj
post 28.11.2003, 00:15:44
Post #5





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


hehe to moze inaczej?

Mam tematy i odpowiedzi trzymane w jednej tabeli, tematy odrozniaja sie tym ze w kolumnie 'rodzaj' ma wartos '1' a odpowiedzi '0'.
Jak je posortowac wg daty (pole datetime), tak zeby obok tematu widniala data ostatniej odpowiedzi (i najnowszy na gorze)!

questionmark.gif


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
adwol
post 28.11.2003, 01:54:06
Post #6





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 6.08.2003

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


[sql:1:b32028ef3a]select id_temat, max(data) as data from mcz_post group by id_temat order by data desc[/sql:1:b32028ef3a]
O takie coś Ci chodziło?
Go to the top of the page
+Quote Post
kicaj
post 28.11.2003, 17:05:34
Post #7





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Zapytanie jest dobre! thx, ale teraz musze zrobic tak zeby obok najnowszego tematu byla ostatnia data[php:1:9c376cbcf5]<?php
$zapytanie = "SELECT *, max(data) AS data2 FROM mcz_post GROUP BY id_temat ORDER BY data2 DESC";
$wykonaj = mysql_query($zapytanie);

while($wiersz = mysql_fetch_array($wykonaj)) {

echo "$wiersz[data] - $wiersz[temat] ";

$zapytanie1 = "SELECT * FROM mcz_post WHERE id_temat=$wiersz[id] AND (id!=id_temat) ORDER BY data DESC";
$wykonaj1 = mysql_query($zapytanie1);
$licz1 = mysql_num_rows($wykonaj1);

echo "<br>";

while($wiersz1 = mysql_fetch_array($wykonaj1)) {
echo "+ $wiersz1[data] $wiersz1[temat]<br>";

}

echo "<br>";

}
?>[/php:1:9c376cbcf5]

Wynik:
Kod
2003-11-25 20:42:53 - Trzeci temat

+ 2003-11-27 14:42:34 Odpowiedz nr 5 do Trzeci temat

+ 2003-11-25 20:52:26 Odpowiedz nr 3 dla Trzeci temat



2003-11-25 21:54:14 - Czwarty temat



2003-11-25 20:40:43 - Pierwszy temat

+ 2003-11-25 20:53:25 Odpowiedz nr 4 do Pierwszy temat

+ 2003-11-25 20:44:17 Odpowiedz nr 1 do Pierwszy temat



2003-11-25 20:41:59 - Drugi temat

+ 2003-11-25 20:50:45 Odpowiedz nr 2 do Drugi Temat


Chce tylko zeby obok tematu byla data ostatniego posta!


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
kicaj
post 2.12.2003, 13:35:04
Post #8





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


OK! dziala juz bezproblemowo tongue.gif

Ale teraz dodalem kolumne w 'ogloszenia' i gdy ma ona wartosc '1' to przy temacie pojawia sie napis 'ogloszenie'.
Chcialbym zeby te ogloszenia zawsze byly na gorze, a reszte sortowalo wg daty

Jak to zrobic?


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
FiDO
post 2.12.2003, 13:44:54
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


[sql:1:896c245e75]...
ORDER BY ogloszenia DESC, data
[/sql:1:896c245e75]


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
kicaj
post 27.12.2003, 22:06:13
Post #10





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Cytat
Moja tabela
Kod
id - opis - nid

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

1 - qaz  - 1

2 - wsx  - 2

3 - edc  - 1

4 - rfv  - 3

5 - tgb  - 1

6 - yhn  - 5


niestety moja tabela teraz wyglada troszke inaczej:
Kod
id - opis - nid

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

1 - qaz  - 0 //temat

2 - wsx  - 0 //temat

3 - edc  - 1 //post

4 - rfv  - 3 //post

5 - tgb  - 1

6 - yhn  - 5

gdyz podczas wstawiania do bazy tematow nie moge ustalic jaki obecny temat bedzie mial 'nid'

Jak zrobic teraz to zapytanie??


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
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: 19.07.2025 - 16:04