nach allen spalten gruppieren, die nicht bestandteil der aggregatsfunktionen sind.
Ankündigung
Einklappen
Keine Ankündigung bisher.
[Erledigt] Unterkategorien werden nicht gezählt!
Einklappen
Neue Werbung 2019
Einklappen
X
-
So wenn du mir jetzt noch sagst was du mit aggregatsfunktionen meinst dann bin ich schon ein Stück weiter!
Meinst du damit nachen allen Sachen gruppieren die ich nicht brauche um ein Ergebnis anzeigen zu lassen,oder habe ich das falsch verstanden?Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
[URL]http://www.lit-web.de[/URL]
Kommentar
-
Also dann mal danke für deine Hilfe.
Und wenn es da drin erklärt gewesen wäre dann hätte ich sicher danach nicht gefragt!
Und ich denke den Großteil Grundliegender Sachen habe ich schon intus. Und das heist nicht das ich nichts mehr lernen muss,ich denke man lernt nie aus!
mfg der LitterAus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
[URL]http://www.lit-web.de[/URL]
Kommentar
-
Grundsätzlich müssen in einer Abfrage mit GROUP BY und Aggregatsfunktionen (COUNT, SUM, AVG, etc) alle Attribute, die ausgegeben werden sollen, auch in der GROUP BY-Klausel stehen. Ist ja auch logisch. Wenn du nach COUNT(parent_id) fragst, welche parent_id innerhalb von dieser Gruppe soll dann angezeigt werden? Im Gegensatz zu allen andern mir bekannten RDBMS's akzeptiert MySQL leider solche falschen Abfragen und liefert dann einfach ein Zufallsergebnis.Gruss
L
Kommentar
-
Also zum Verständnis!
Ich will mir ja ausgeben lassen die id,parent_id,ncat,level,cat_id
cat_id befindet sich in einem Count und parent_id befindet sich auch in einem Count!
Die parent_id brauche ich ja um Kategorien auszuzählen und die cat_id um Datensätze auszuzählen! Die ncat um die Kategorienamen anzeigen zu lassen und das Level um die Links ausgeben zu lasen,entweder zu weiteren Kategorien oder ebend zu den Datensätzen die zu einer Kategorie gehören!
Jetzt habe ich die Group By so geschrieben.
PHP-Code:<?php
$sqlbefehl ="Select dc.id,dc.ncat,dc.parent_id,dc.level,dc.darf,df.cat_id, Count(df.cat_id) As anzahl, Count(dc.parent_id) As cat_anzahl
From
$tab_dlcats dc
Left Join
$tab_dlfiles df
ON (dc.id = df.cat_id)
Where dc.parent_id ='".$id."' Group By dc.id,dc.ncat,dc.parent_id,dc.level,df.cat_id";
?>Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
[URL]http://www.lit-web.de[/URL]
Kommentar
-
Zitat von litterauspirna Beitrag anzeigenHabe ich daher richtig verstanden was ihr meint oder liege ich falsch?PHP-Code:$sqlbefehl = "
SELECT
dc.id,
dc.ncat,
dc.parent_id,
dc.level,
dc.darf,
df.cat_id,
COUNT(df.cat_id) AS anzahl,
COUNT(dc.parent_id) As cat_anzahl
FROM
tab_dlcats dc
LEFT JOIN
tab_dlfiles df ON dc.id = df.cat_id
WHERE
dc.parent_id = $id
GROUP BY
dc.id,
dc.ncat,
dc.parent_id,
dc.level,
dc.darf,
df.cat_id";
Gruss
L
Kommentar
-
Das Problem ist wenn ich das Group By weg lasse dann bekomme ich eine Fehlermeldung wo drin steht das das Group By vermisst wird!
Und zum anderen die Zähler stehen nicht generell auf 1.weil wenn Datensätze in einer Kategorie sind dann wird neben der Kategorie auch die Anzahl angezeigt. Sprich Kategorie Ferarie hat drei Datensätze dann steht daneben auch die 3!
Kategorie Ferarie,Porshce und Lamorgini sind in der Kategorie Autos und bei der Kategorie Autos wird da eine 0 angezeigt obwohl 3 Unterkategorien drin entahlten sind! Sprich ein Zähler funzt richtig und einer nicht!Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
[URL]http://www.lit-web.de[/URL]
Kommentar
-
Zitat von litterauspirna Beitrag anzeigenKategorie Ferarie,Porshce und Lamorgini sind in der Kategorie Autos und bei der Kategorie Autos wird da eine 0 angezeigt obwohl 3 Unterkategorien drin entahlten sind!
[OT]
Ausserdem: wer will denn solche Schrottkarren (Ferarie,Porshce und Lamorgini)?Gruss
L
Kommentar
-
ich glaube dein ganzes verständnis von deinem problem ist nicht ganz korrekt
- du holst Dir mit deinem sql nicht die zusammengehörigen kategorien, es gibt keine verbindung über parent_id
- Da dein sql ohne count() bereits fehlerhaft ist kannst Du hier erstmal abbrechen, wenn Du die richtigen datensätze holst, kannst Du auch den count() einbauen mit der richtigen gruppierung...
Kommentar
-
Hallo Leute!
Ich habe es geschafft.
Nun werden Unterkategorien sowie auch Datensätze zu Kategorien je nach Fall gezählt!
Ich sende den Code mal mit falls es mal ein solches Problem gibt!
PHP-Code:<?php
if (empty($_GET['id']))
{
$id = 0;
}
else
{
$id = $_GET['id'];
}
echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"500\" border=\"0\">";
//Abfrage der Tabellen dlcats und dlfiles
$sqlbefehl = "
SELECT
dc.id,
dc.ncat,
dc.parent_id,
dc.level,
dc.darf,
df.cat_id,
COUNT(df.cat_id) AS anzahl
FROM
$tab_dlcats dc
LEFT JOIN
$tab_dlfiles df ON dc.id = df.cat_id
WHERE
dc.parent_id = '".(int)$id."'
GROUP BY
dc.id,
dc.ncat,
dc.parent_id,
dc.level,
dc.darf,
df.cat_id";
$catanz = mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
$i =1;
while($cat = mysql_fetch_array($catanz)){
//Noch eine Abfrage um die Unterkategorien (parent_id) zu den Kategorien zu zählen
$sqlbefehl ="
Select
parent_id,
Count(parent_id) As ucat_anzahl
From
$tab_dlcats
Where
parent_id='".(int)$cat['id']."'
Group By
parent_id
";
$ergebnis_ucat = mysql_query($sqlbefehl)or die(mysql_error().$sqlbefehl);
$count_wert = mysql_fetch_array($ergebnis_ucat);
if($i==1){echo "<tr>";}
echo "<td align=\"center\" >";
echo "<table cellpadding=\"0\" cellspacing=\"0\" width=\"200\" border=\"0\">";
echo "<tr>";
echo "<td class=\"catshow\">";
//wenn level nicht auf 1 steht wird er link der zu den unterkategorien führt ausgegeben
if($cat['level']!=1)
{
echo "<a href=\"show_cats.php?id=".$cat['id']."\">".$cat['ncat']."";
echo " [";
//hier sollen die unterkategorien zu den Kategorien gezählt
//ausgegeben werden (klappt nicht)
//if($cat['id'] == $count_wert['parent_id'])
//{
echo $count_wert['ucat_anzahl'];
//}
echo "]";
echo "</a>";
}
else
{
//wenn level auf 1 steht wird wird der link angezeigt der zum den files führt
echo "<a href=\"show_file.php?cat_id=".$cat['id']."\">".$cat['ncat']."";
echo " [";
//Hier wird die ANzahl der Datensätze zu den Kategorien ausgegeben (klappt)
echo $cat['anzahl'];
echo "]";
echo "</a>";
}
echo "</td>";
echo "</tr>";
echo "</table><br>";
echo "</td>";
if($i==2){echo"</tr>";$i=0;}
$i++;
}
echo "</table>";
?>
mfg der LitterAus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
[URL]http://www.lit-web.de[/URL]
Kommentar
Kommentar