SELECT a FROM-ban..., mivel váltható ki?
sziasztok,
az alábbi egyszerű lekérdezési logika az én gépemen minden gond nélkül megy,
azonban át lett rakva egy régebbi MySQL-t futtató gépre,
ami nem ismeri a FROM-on belüli selectet...
Mivel lehetne ugyanezt elérni? Esetleg hasonlóan egyszerűen?
a lentebbi lekérdezést és teszt-táblát használva látható a lényeg; a rekordok "type" mezője alapján kell kategorizálni (group by)
és az így létrehozott csoportokból a legutolsó időpont kell
tábla:A lekérdezésben a FROM-ban levő SELECT csökkenő sorrendbe rendezi a táblát és ezt csoportosítja a GROUP BYEz a kimenete, és ez jó is, mert megkapom mindegyik csoporthoz kapcsolódó legutolsó, legmagasabb időpontot tartalmazó rekordotSzóval a kérdés; mivel lehet ugyanezt elérni és ezt a lekérdezést kiváltani?
--------------------------------------------------------------
Ez a teszt-tábla hozzá
■ az alábbi egyszerű lekérdezési logika az én gépemen minden gond nélkül megy,
azonban át lett rakva egy régebbi MySQL-t futtató gépre,
ami nem ismeri a FROM-on belüli selectet...
Mivel lehetne ugyanezt elérni? Esetleg hasonlóan egyszerűen?
a lentebbi lekérdezést és teszt-táblát használva látható a lényeg; a rekordok "type" mezője alapján kell kategorizálni (group by)
és az így létrehozott csoportokból a legutolsó időpont kell
tábla:
mysql> select * from test.grpr;
+------+--------+-------------+----------+
| id | type | datum | ido |
+------+--------+-------------+----------+
| 1 | auto | 2008.05.29. | 12:15:02 |
| 2 | auto | 2008.04.14. | 21:15:02 |
| 3 | auto | 2008.05.04. | 16:30:09 |
| 4 | auto | 2008.05.29. | 05:10:10 |
| 5 | hajo | 2008.04.21. | 17:40:42 |
| 6 | hajo | 2008.05.11. | 12:15:02 |
| 7 | hajo | 2008.05.11. | 10:20:02 |
| 8 | repulo | 2008.05.20. | 12:15:02 |
| 9 | repulo | 2008.05.20. | 11:38:17 |
| 10 | repulo | 2008.05.08. | 10:20:00 |
+------+--------+-------------+----------+
SELECT * FROM (SELECT * FROM test.grpr ORDER BY datum DESC, ido DESC) AS grpr GROUP BY type;
mysql> SELECT *
-> FROM (SELECT * FROM test.grpr ORDER BY datum DESC, ido DESC) AS grpr
-> GROUP BY type;
+------+--------+-------------+----------+
| id | type | datum | ido |
+------+--------+-------------+----------+
| 1 | auto | 2008.05.29. | 12:15:02 |
| 6 | hajo | 2008.05.11. | 12:15:02 |
| 8 | repulo | 2008.05.20. | 12:15:02 |
+------+--------+-------------+----------+
3 rows in set (0.04 sec)
--------------------------------------------------------------
Ez a teszt-tábla hozzá
create table test.grpr
(
id char(2),
type char(10),
datum char(15),
ido char(9)
);
insert into test.grpr values ('1','auto','2008.05.29.','12:15:02');
insert into test.grpr values ('2','auto','2008.04.14.','21:15:02');
insert into test.grpr values ('3','auto','2008.05.04.','16:30:09');
insert into test.grpr values ('4','auto','2008.05.29.','05:10:10');
insert into test.grpr values ('5','hajo','2008.04.21.','17:40:42');
insert into test.grpr values ('6','hajo','2008.05.11.','12:15:02');
insert into test.grpr values ('7','hajo','2008.05.11.','10:20:02');
insert into test.grpr values ('8','repulo','2008.05.20.','12:15:02');
insert into test.grpr values ('9','repulo','2008.05.20.','11:38:17');
insert into test.grpr values ('10','repulo','2008.05.08.','10:20:00');
Lehet, hogy hülyeség...
elsővel baj
másodikkal is
http://weblabor.hu/forumok/temak/21158#comment-53083
Jogos
Egyébként ez a "minden mező legyen char" kényszerű örökség?
köszi
...Drawain szerint az első biztos nem müxik régebbi mysql-ben... nekem meg a második kétséges... mintha max-ban levő concat-ot probáltam volna már ott és nem ment, ...ha jól emlékszem...
már azon gondolkoztam, hogy csinálok egy nézettáblát, ami csak az eredeti tábla select * és order by desc, majd ezt kérdezem le és ebben a lekérdezésben group by...
Másodiknál rosszak az ID-k
Tényleg :(
[de ezek hibásak, mert a WHERE-nél az = (vagy LIKE, hiszen stringekről van szó) jobb oldalán nem lehet függvény(?), a HAVING-nél meg azt hibaüzeni: "Unknown column 'datum' in having clause"]