PDA

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

NiKrYss
17.07.2005, 17:42
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.

fanrpg
17.07.2005, 17:50
ich glaube es gibt einen Befehl JOIN in MySQL der genau das gesuchte macht, wie der anzuwenden ist, davon habe ich kA

DFYX
17.07.2005, 18:22
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.

Manni
22.07.2005, 19:06
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;