Anzahl der gleichen Id's in Tabellen-Spalte ermitteln

abakuz

Mitglied
Hallo zusammen,

ich möchte gerne die Anzahl der gleichen Id's innerhalb einer Tabellen-Spalte ermitteln und komme nicht weiter.
Momentan benutze ich diesen Befehl:

$sql2 = "SELECT COUNT(*) as Anzahl FROM sub_content GROUP BY 'sub_id'";

dadurch wird mir aber nur die gesamte Anzahl der Id's angezeigt.
Kann mir bitte jemand den Befehl verraten der die Anzahl der Elemente ausgibt die mehrmals in einer Spalte vorkommen.

In meinem Fall möchte ich z.B. die Anzahl der gleichen Id's erhalten die in einer Spalte vorkommen.

hier kommt die 10 ....1x vor
und die 15 .... 2x.
usw..

| Id | Sub_Id |
---------------
| 1 | 10 |
| 2 | 15 |
| 3 | 15 |

Ich hoffe es kann mir jemand helfen.



Vielen Dank im vorraus!


Gruß Abakuz
 
Die genannte Abfrage ist gar nicht so falsch. Nur hast du statt den so genannten Backticks (`, U+0060) Apostrophen verwendet. Daher:
Code:
SELECT
        COUNT(*) AS `Anzahl`
  FROM
        `sub_content`
  GROUP BY
        `sub_id`
 
danke für die schnelle Antwort...:)
Ich denke das ist genau das was ich suche.


ich habe jetzt folgendes ausprobiert:

Code:
			$sql2 = "SELECT sub_id FROM sub_content";
			$result2 = mysql_query($sql2) or die(mysql_error());
			
			while($anzahl = mysql_fetch_array($result2)) {
				print_r(array_count_values($anzahl));
			}

und bekomme das hier:
Array ( [76] => 2 ) Array ( [76] => 2 ) Array ( [60] => 2 ) Array ( [60] => 2 ) Array ( [60] => 2 ) Array ( [60] => 2 ) Array....


richtig wäre eigentlich:
Array
(
[76] => 2
[60] => 4
...usw...
)


Was mache ich nur falsch




Gruß Abakuz
 
Hi Gumbo,

danke auch an Dich...hat funktioniert wie Du es beschrieben hast....:)
Aber so richtig es leider noch nicht, hab da noch irgendwo ein Fehler, oder ein
Verständnis Problem.

Hab es so gemacht:

Code:
$sql2 = "SELECT COUNT(*) AS `Anzahl` FROM `sub_content` GROUP BY `sub_id`";		
$result2 = mysql_query($sql2) or die(mysql_error());
while($anzahl = mysql_fetch_array($result2)) {
echo "Anzahl: ".$anzahl[Anzahl]."<br>";
}


Und das kommt dabei raus:
Anzahl 4
Anzahl 2
Anzahl 4
Anzahl 2
Anzahl 4
Anzahl 2
Anzahl 4
Anzahl 2
Anzahl 4
Anzahl 2
Anzahl 4
.
.

Ich denke meine Schleife ist falsch...
Wie wende ich die Schleife richtig an

Mein Ziel ist es später so ein Darstellung zu erhalten:

Bücher (2)
Pflanzen (49)
Tiere (23)
Planeten (12)

Also hinter der jeweiligen Rubrik, die Anzahl der Beiträge die dazu existieren.
.........ist meine Herangehensweise richtig?

Es gibt Tage da sollte man den Rechner am besten nicht einschalten...:rolleyes:





Gruß Abakuz
 
Diese beiden Tabellen sind relevant für mein vorhaben.


CREATE TABLE `tut_sub` (
`tut_sub_id` int(11) NOT NULL auto_increment,
`tut_main_id` int(11) NOT NULL default '0',
`tut_sub_titel` varchar(255) NOT NULL default '',
`tut_sub_keywords` varchar(255) NOT NULL default '',
`tut_sub_description` varchar(255) NOT NULL default '',
`tut_sub_date` timestamp(14) NOT NULL,
PRIMARY KEY (`tut_sub_id`)
) TYPE=InnoDB AUTO_INCREMENT=91 ;


In der folgenden Tabelle möchte ich die Datensätze zählen die in der Spalte tut_sub_id vorkommen um diese später neben dem Link anzeigen zu können.


CREATE TABLE `tut_sub_content` (
`tut_sub_cont_id` int(11) NOT NULL auto_increment,
`tut_sub_id` int(11) NOT NULL default '0',
`tut_sub_cont_titel` varchar(255) NOT NULL default '',
`tut_sub_cont_beschr` text NOT NULL,
`tut_sub_cont_bild` varchar(255) NOT NULL default 'n/a',
`tut_sub_cont_autor` varchar(50) NOT NULL default '',
`tut_sub_cont_sprache` varchar(255) NOT NULL default '',
`tut_sub_cont_url` varchar(255) NOT NULL default '',
`tut_sub_cont_clicks` int(11) NOT NULL default '0',
`tut_sub_cont_date` datetime default NULL,
`tut_sub_cont_lastedit` timestamp(14) NOT NULL,
PRIMARY KEY (`tut_sub_cont_id`)
) TYPE=InnoDB AUTO_INCREMENT=23 ;

Ich hoffe es ist das was Du meintest mit dem Schema.
 
Nach langem hin und her überlegen und eurer Hilfe...:) .. hat es endlich geklappt.

Ich habe es nun so gelöst:

$tutsubid = $erg1['tut_sub_id'];
$sql2 = "SELECT COUNT(*) AS `Anzahl` FROM `tut_sub_content` WHERE tut_sub_content.tut_sub_id = $tutsubid GROUP BY `tut_sub_id` ";
$result2 = mysql_query($sql2) or die(mysql_error());
$erg2 = mysql_fetch_assoc($result2);

Anschließen spreche ich Anzahl so an:
$erg2['Anzahl']

und es funktionieeeeert....:)

Ich musste es nur innerhalb der While-Schleife packen die schon für die Ausgabe der
Bezeichnungen existierte.

Der Abend ist gerettet!

Vielen Dank für eure Unterstützung!


Gruß Abakuz
 
Zurück