Archiv verlassen und diese Seite im Standarddesign anzeigen : Lösungssuche für eine (für mich) komplizeirte SQL-Abfrage
darkpegasus
15.07.2005, 16:20
Hallo
Ich hätte mal eine Frage, weil ich schon lange nach einer Lösng für ein Problem suche:
Also, cih habe zwei Tabellen
Tabelle 1:Kathegorien
Zwei spalten (ID und Kathegorie)
tabelle 2:Objekte
drei Spalten (ID, titel und Kathegorie)
Jetzt will ich die Kathegorien nacheinander ausgeben und dahinter zu jeder Kathegorie das neueste Objkekt (mit der höchsten ID)
Ansich ist das kein Problem (mit php), alelrdings hätte ich das gerne alles in einer einzelnen SQL-Abfrage.
Wenn jemand ne Lösung hätte wäre ich dankbar
cye
darkpegasus
hi
also ich glaube dein Problem lässt sich so nicht lösen. Es dürfte schwierig sein, bereits bei der Abfrage herauszufiltern, welches das aktuelleste Objekt in der Kategorie ist.
Du könntest entweder alle zur Kategorie gehörenden Objekte abfragen und dann mit mysql_fetch_array oder ähnlichem das Objekt mit der höchsten ID herausfiltern. Oder du fügst in deine SQL-Tabelle einfach eine zusätzliche Spalte ein, die lediglich die Werte 0 und 1 annehmen kann. Das aktuelleste Objekt setzt du dann einfach immer auf 1 und alle anderen auf 0. Allerdings weiß ich nicht, ob das vereinbar ist mit dem, was du sonst noch mit der Tabelle machst.
Nicht ganz das was du suchst, aber vielleicht hilft es ja weiter.
ich glaube es gibt einen Befehl JOIN in MySQL der genau das gesuchte macht, wie der anzuwenden ist, davon habe ich kA
Also in einem einzelnen Query wüsste ich keine Lösung, aber mit zweien is das kein Problem.
$categories = mysql_query("SELECT * FROM categories");
while($category = mysql_fetch_object($categories))
{
$object = mysql_fetch_object(mysql_query("SELECT * FROM objects WHERE cat_id='$category->id' ORDER BY id DESC LIMIT 0, 1"));
echo $object->title;
}
darkpegasus
21.07.2005, 20:57
Ok, danke erstmal für eure bemührungen, werd ich mal ausprobieren... (obohl sich das Problem eigentlich aufgelöst hat, da ich die Anzeigen anders gemacht habe, aber schon interessehalber wil ich es mal versuchen.
Versuchs mal damit (is ungetestet, könnte aber klappen :D):
SELECT a.`Kathegorie`, b.`Titel` FROM a `Kathegorien`, b `Objekte` GROUP BY b.`Kathegorie` ORDER BY b.`id` DESC;
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.