Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Zwei Abfragen in einer, aber wie? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zwei Abfragen in einer, aber wie?


 
moneygoesfree
30-06-2003, 16:28 
 
Hallo


Ich möchte weniger Queries für meine Datenbankabfragen verwenden, also Abfragen miteinander verknüpfen.
Habe mir deshalb schon einige Threads dazu angesehen, bin jedoch nicht schlau draus geworden:(


Ich habe zwei Tabellen:
- anbieter_kategorien
- kategorieid
- kategoriename
- anbieter_anbieter
- anbieterid
- kategorieid
- anbietername
- ...

Nun möchte ich alle Kategorien aus der Tabelle anbieter_kategorien abfragen und jeweils die zugehörige Anzahl
der Anbieter, die in der jeweiligen Kategorie verfügbar sind. Bisher hab ich das so gemacht, was aber nicht unbedingt
gut für die Datenbankperformance ist:


$sql = "SELECT kategorieid,kategoriename FROM anbieter_kategorien WHERE showkategorie=1 ORDER BY sortid ASC ";
$result = mysql_query($sql,$connection);
if (mysql_num_rows($result) != 0)
{
$i = 1;
while (list($kategorieid[$i],$kategoriename[$i]) = mysql_fetch_row($result))
{
$anbietercount[$i] = mysql_num_rows(mysql_query("SELECT anbieterid FROM anbieter_anbieter WHERE kategorieid='$kategorieid[$i]' && showanbieter='1' ",$connection));
$i++;
}
}

 
goth
30-06-2003, 16:55 
 
Probier' mal ein SQL-Statement in der Art:
SELECT k.kategorieid, k.kategoriename, COUNT(a.anbieterid) anzahl
FROM anbieter_kategorien k
LEFT JOIN anbieter_anbieter a
ON k.kategorieid = a.kategorieid
GROUP BYL k.kategorieid, k.kategoriename
Werte auslesen ... fertig.

 
moneygoesfree
30-06-2003, 17:28 
 
Funktioniert prima. DANKE!

Mir ist jetzt noch ne Kleinigkeit eingefallen:
Kann man da noch einbauen, damit die kategorie nur dann ausgegeben wird, falls die anzahl > 0 ist?

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:42 Uhr.