Zählen wieoft ein Eintrag vorkommt, auf die schnelle Art ;)

Katzehuhn

Erfahrenes Mitglied
Ich hab folgendes:
DB: einheiten
.....
Gruppen_id
Zone ( geht von 1-3)
....
So nun haben wir zb diese einträge

Gruppen_id : 4
Zone : 2
Gruppen_id : 4
Zone : 2
Gruppen_id : 4
Zone : 2
Gruppen_id : 4
Zone : 2
Gruppen_id : 4
Zone : 1

Nun möchte ich auf die schnellstmögliche Art das Abfragen:
$zählen = mysql_query("Select zone FROM einheiten WHERE gruppen_id = $id /* in dem fall 3*/ AND zone = 3 ");
$anz = mysql_num_rows($zählen);

Das Problem ist das des leider net funktioniert, gibt mir andauern 1 aus( is auch klar..) nur wisst ihr wie man das schnellstmöglich machen könnte? hab im mysql referenzbuch einwenig gestöbert und zwar bissal was gefundn aba keine Ahnung wie ich das einbaue(und ob es mir das bringt was ich will^^).

Ich will nur nachschauen lassen ob eine zone leer ist, wenn ja soll 0 ausgegeben werden, anderfalls 1. Und es wäre gut wenn ihr mir die schnellstmögliche Art sagen könntet wie ich das bewerkstelligen kann, weil diese Abfrage ziemlich oft vorkommt und das Script sonst zu lange laden würde. Danke!
 
Hallo.
Geht es vielleicht so?
PHP:
$zählen = mysql_query("Select COUNT(zone) AS anzahl FROM einheiten WHERE gruppen_id = $id /* in dem fall 3*/ AND zone = 3 "); 
$row = mysql_fetch_assoc($zählen);
echo $row['anzahl'];
 
Oder wie wär's mit Folgendem:
PHP:
<?php

	$query = "
		SELECT
		        IF(COUNT(*)>0, 0, 1) AS `ist-besetzt`
		  FROM
		        `einheiten`
		  WHERE
		        `gruppen_id` = $id
		  GROUP BY
		        `zone`
		";
	$result = mysql_query($query);
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo $row['ist-besetzt'];
	}

?>
 
Zurück