kay899 Geschrieben 19. September 2009 Teilen Geschrieben 19. September 2009 Hallo, ich habe eine Abfrage die zwei Tabellen abfragt: SELECT t.tagid, t.tgroupid, t.label, g.label FROM rss_tags t, rss_taggroups g WHERE t.tgroupid = g.tgroupid ORDER BY g.sortorder ASC, t.label ASC Das Ergebnis sieht so aus: tagid tgroupid label label 9 1 Allgäu Regionen 4 1 Harz Regionen 2 1 Nordsee Regionen 3 1 Ostsee Regionen 8 1 Westerwald Regionen 5 2 Bayern Bundesländer 6 3 Fußballspiel Veranstaltungsart 7 3 Musical Veranstaltungsart Ich würde jetzt gern gleichzeitig abfragen, wie wie Datensätze ich in welcher Gruppe (tgroupid) habe. Wenn ich mt COUNT() arbeite, bekomme ich immer 8 geliefert als Ergebnis aller Datensätze. Kann mir da jemand vielleicht einen Tip geben? Vielen Dank... Kay Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 19. September 2009 Teilen Geschrieben 19. September 2009 SELECT t.tgroupid, g.label, count(*) FROM rss_tags t, rss_taggroups g WHERE t.tgroupid = g.tgroupid GROUP BY t.tgroupid, g.label ORDER BY t.label ASC Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kay899 Geschrieben 19. September 2009 Autor Teilen Geschrieben 19. September 2009 Super, vielen Dank... beides zusammen geht wahrscheinlich nicht, oder? also die Daten ausgeben und gleichzeitig durchzählen. LG Kay Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 19. September 2009 Teilen Geschrieben 19. September 2009 geht schon, aber so richtig will sich mir der sinn nicht erschliessen. willst du so etwas: tagid tgroupid label label groupidcounter 9 1 Allgäu Regionen 5 4 1 Harz Regionen 5 2 1 Nordsee Regionen 5 3 1 Ostsee Regionen 5 8 1 Westerwald Regionen 5 5 2 Bayern Bundesländer 1 6 3 Fußballspiel Veranstaltungsart 2 7 3 Musical Veranstaltungsart 2 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kay899 Geschrieben 19. September 2009 Autor Teilen Geschrieben 19. September 2009 ja genau sowas in der Art ich möchte die Checkboxen im nächsten Schritt in 3 oder 4 Spalten anzeigen und dann umbrechen lassen. Also sowas: ================================================== || Region || [] Allgäu || [] Harz || [] Nordsee || || || [] Ostsee || [] Westerwald || || ================================================== || VA-Art || [] Fußballspiel || [] Musical || || ================================================== Da ich die Spalten mit den Checkboxen dann ja berechnen muss, müsste ich gleichzeitig wissen, wie viele Reihen ich in dieser Tabelle für die "Bezeichnung" = 1 Spalte verbinden muss. Hoffe das ist jetzt etwas klarer. Nochmals Danke für die Hilfe Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 19. September 2009 Teilen Geschrieben 19. September 2009 Problem verstanden. Deine Lösung ist suboptimal Ich weiß nicht in welcher Sprache du das machst, aber eine Schleife würde dein Problem lösen. Stichwort Modulo-Operation if ((zählvar%[AnzahlSpalten])==0) { </tr> <tr> } Zuvor natürlich eine ForEach Region Schleife Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 19. September 2009 Teilen Geschrieben 19. September 2009 Zeilen berechnet man bei bekannter Elementanzahl über den Div-Operator, mit Hilfe des Modulo-Operator kann man prüfen, ob in der letzten Zeile alle Spalten besetzt sind. Aber Du "kippst" Deine Tabelle um 90 Grad und das lässt sich mittels einer Pivot-Abfrage (sofern es das DBMS unterstützt) auch direkt realisieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kay899 Geschrieben 20. September 2009 Autor Teilen Geschrieben 20. September 2009 Hallo, ich benutze PHP. Mein Code sieht im Moment so aus (das mit $i ist der gescheiterte Versuch): function TagsList() { global $admin, $bgcolor1, $bgcolor2, $bgcolor3; global $prefix, $sitename, $module_name; $qry="SELECT t.tagid, t.tgroupid, t.label, g.label FROM ss_tags t, rss_taggroups g WHERE t.tgroupid = g.tgroupid ORDER BY g.sortorder ASC, t.label ASC"; $result = sql_query($qry); if($result){ $Anzahl=mysql_numrows($result); $lastgroup=0; $i=1; while(list($tagid, $tgroupid, $label, $grouplabel) = sql_fetch_row($result)) { $Row++; if ($lastgroup!=$tgroupid) { if ($GroupID==0) $out.="<tr bgcolor=\"$bgcolor2\"><td><b>$grouplabel</b></td><td bgcolor=\"$bgcolor3\">"; // Zwischenüberschrift Gruppenname $lastgroup=$tgroupid; } $out.="<input type=checkbox name=\"tagbox[]\" ".(($Value>0) ? "checked " : "")."value=$tagid> $label "; if($i==3) { $i=1; $out.="<br>"; } $i++; } $out.="</td></tr>"; } return $out; } [/PHP] Ich würde gerne den Bereich der Checkboxen in drei Tabellen-Spalten trennen, da ich die dann auch gut stylen kann. Jedoch hat mein Formular ja vorne eine Titelspalte und wenn ich auf Tabellenzellen umsteige muss ich wissen, wie viele Reihen vorne die Bezeichnung der Gruppe hat, damit ich die Tabelle sauber aufbauen kann oder? Danke für eure Hilfe... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 20. September 2009 Teilen Geschrieben 20. September 2009 Ich würde Dir davon abraten, sobald Du einmal das Statement bzw das Order darin änderst, klappt das ganze nicht mehr. Es gibt für SQL das Group-By bzw würde ich wirklich das als Pivot machen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.