![]() |
Datenbank: MySQL • Version: 5.x • Zugriff über: php-mysql-modul
[MYSQL] Letzte Einträge pro kategorie
Hallo,
ich hab da grade ein kleines mysql-problem. ich habe eine Tabelle mit den "wichtigen spalten" cat_id (int) und image_date (int). nun will ich pro kategorie (cat_id) nur den letzten Eintrag (höchster Wert in Image-date). ich hab schon mit "group by" rumprobiert, aber es liefert mir immer nur das älteste, ein "order by" vorher geht nicht, danach ist es unnütz, da group by nur 1 Datensatz pro cat_id übermittelt. habs auch noch mit distinct probiert, aber da bekomme ich nur den Maximalwert der angegebenen Spalte und nicht alle Felder. also sowas in der Art:
Code:
Gruß Frank
SELECT * FROM `4images_images` Order by `image_date` DESC Group by `cat_id`;
|
Re: [MYSQL] Letzte Einträge pro kategorie
SQL-Code:
SELECT * FROM `images_images` ORDER BY `image_date` DESC LIMIT 1;
|
Re: [MYSQL] Letzte Einträge pro kategorie
Hallo, lies Dir
![]() |
Re: [MYSQL] Letzte Einträge pro kategorie
Manuels Lösung liefert aber keine Gruppierung nach cat_id, sondern einfach nur einen Datensatz :(
SQL-Code:
SELECT cat_id, max (image_date) as last_image_date
FROM 4images_images |
Re: [MYSQL] Letzte Einträge pro kategorie
Ah, ich hab das mit "für jede cat_id" überlesen.
|
Re: [MYSQL] Letzte Einträge pro kategorie
Jellys Lösung liefert zusammenhanglose Daten (die ID und immer das größte Datum). Ich habe den Link nicht umsonst gepostet :mrgreen: .
|
Re: [MYSQL] Letzte Einträge pro kategorie
Zitat:
Zitat:
|
Re: [MYSQL] Letzte Einträge pro kategorie
Er will (soweit ich verstanden habe) eine Auflistung der Kategorien mit deren jeweils höchstem Wert.
|
Re: [MYSQL] Letzte Einträge pro kategorie
Ja, eben.
Steh ich grad im Wald, oder bist du das :gruebel: Also irgendeiner steht auf dem Schlauch, das steht fest :mrgreen: |
Re: [MYSQL] Letzte Einträge pro kategorie
Ich hol Dich mal vom Schlauch runter :zwinker: .
Angenommen, seine Tabelle sieht so aus: Kategorie - Wert 1 1 1 2 2 7 2 12 5 6 6 20 Dann käme bei Deinem Statement das folgende heraus: 1 20 1 20 2 20 2 20 5 20 6 20 Er muss also je Kategorie das Maximum ermitteln, nach Kategorie gruppieren und dann ausgeben. Wie das geht, ist in der von mir verlinkten Seite prima beschrieben. //Edit: Buchstabendreher korrigiert. |
Re: [MYSQL] Letzte Einträge pro kategorie
Brrrr.... Ich Depp hab ja auch einfach das group by verduselt:
SQL-Code:
gibt dann Folgendes aus:
SELECT cat_id, max (image_date) as last_image_date
FROM 4images_images group by cat_id
Code:
1 2
2 12 5 6 6 20 |
Re: [MYSQL] Letzte Einträge pro kategorie
Siehste, das ist Schritt 1. Wenn dann noch gejoint werden muss, wird es etwas kniffliger. Aber hast schon Recht, so isses IMHO richtig.
|
Re: [MYSQL] Letzte Einträge pro kategorie
Ich sag ja... Habs nur verschwitzt :wall:
|
Re: [MYSQL] Letzte Einträge pro kategorie
Schön, dass wir uns schlussendlich doch einig geworden sind, oder? :thumb:
|
Re: [MYSQL] Letzte Einträge pro kategorie
Darauf mach ich mir doch glatt mal nen Wein auf. :wink:
|
Re: [MYSQL] Letzte Einträge pro kategorie
erstmal danke für eure Antworten...
der Link von DeddyH hat mir schon geholfen (auch wenns Arg kompliziert in meinen Augen ist...) jellys link gibt mir leider nur die benannten spalten an, und lässt kein * zu... meine aktuelle Abfrage sieht so aus:
SQL-Code:
jetzt hatte ich probiert mir den Kategoriename aus einer anderen Tabelle zu holen. normal geht das ja so:
SELECT * FROM 4images_images i2 WHERE i2.image_date = (SELECT MAX(i1.image_date) AS neustes FROM 4images_images i1 WHERE i1.cat_id = i2.cat_id);
SQL-Code:
meine bisherigen versuche, dies in mein aktuelles set einzubauen werden, bringt mir mehr resultsets als ursprünglich, statt nur den name oder einen Mysql-Fehler durch die variablenzuweisung (i2). mal einer der vielen versuche:
SELECT * , 4images_categories.cat_name AS catname FROM 4images_images,4images_categories WHERE 4images_categories.cat_id = 4images_images.cat_id
SQL-Code:
Gruß Frank
SELECT * FROM , 4images_categories.cat_name AS catname
FROM 4images_images i2 ,4images_categories WHERE (4images_categories.cat_id = 4images_images.cat_id) and (i2.image_date = (SELECT MAX(i1.image_date) AS neustes FROM 4images_images i1 WHERE i1.cat_id = i2.cat_id) ); |
Re: [MYSQL] Letzte Einträge pro kategorie
Mal schnell heruntergetippt:
SQL-Code:
So sollte es richtig sein. Wenn nicht, bitte nochmal melden.
SELECT A.*,B.cat_name AS catname
FROM 4images_images A JOIN 4images_categories B ON B.cat_id = A.cat_id WHERE A.image_date = ( SELECT MAX(C.image_date) FROM 4images_images C WHERE C.cat_id = A.cat_id) |
Re: [MYSQL] Letzte Einträge pro kategorie
danke dir deddyH,
funktioniert wie es soll...jetzt mus ich mich da nur reindenken ;), aber dazu gibts ja genug doku... Gruß Frank |
Re: [MYSQL] Letzte Einträge pro kategorie
Vielleicht ist es besser zu verstehen, wenn man es etwas umformuliert:
SQL-Code:
SELECT A.*,B.cat_name AS catname
FROM 4images_images A, 4images_categories B WHERE B.cat_id = A.cat_id AND A.image_date = ( SELECT MAX(C.image_date) FROM 4images_images C WHERE C.cat_id = A.cat_id) |
Re: [MYSQL] Letzte Einträge pro kategorie
Was spricht gegen:
SQL-Code:
Warum also mit SubSelects arbeiten, was die Abfrage bestimmt nicht schneller macht.
select
B.cat_id, B.cat_name, max(A.image_date) as Max_image_date from 4images_images A inner join 4images_categories B on B.cat_id = A.cat_id group by B.cat_id, B.cat_name |
Re: [MYSQL] Letzte Einträge pro kategorie
@jelly
dass ich nur die 3 genannenten spalten habe, die ich aber nur zum aussortieren nehmen will, möchte aber aus der _images-Tabelle den kompletten Datensatz. @deddy, die 2. Varinate ist schon eher verständlich, aber werde mir danach auch mal die erste genauer anschauen... Gruß Frank |
Re: [MYSQL] Letzte Einträge pro kategorie
Dann müssen halt die fehlenden Spalten im select und im group by mit aufgenommen werden
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz