Hallo und guten morgen,
ich hoffe, daß ich hier richtig gelandet bin und mir geholfen werden kann. Mein Problem bezieht sich auf eine SQL Abfrage zweier Tabellen. In der einen Tabelle ('LOCATIONS') sind Orte eingetragen, in einer zweiten sind Kategorien eingetragen ('KATEGORIEN') und in einer dritten werden jeweils die ID der Locations der ID der jeweiligen Kategorie zugeordnet ('HT_LOCATIONS_KATEGORIEN'). Nun möchte ich ausgeben lassen, wieviele Locations zu jeweils einer bestimmten Kategorie zugeordnet sind.
Auf der Webseite soll es dann so ungefähr aussehen:
Kategorie 1 = 3
Kategorie 2 = 0
Kategorie 3 = 7
Kategorie 4 = 4
.
.
.
ich hoffe, das ist soweit verständlich ausgedrückt.
Ich habe es mit folgender Abfrage probiert:
Und genau bei den .................. liegt das Porblem: hier müsste eigentlich dynamisch die ID der jeweilgen Kategorie eingetragen werden. Wenn ich dort z.B. "1" eintrage, dann folgt als Ausgabe genau die richtige Anzahl an Locations, die der Kategorie 1 zugeordnet wurden. Aber WIE füge ich dort einen dynmischen Wert ein (denn die Kategorie wechselt ja mit jeder Tabellenzeile)? Geht das überhaupt mit SQL? Oder habe ich da einen völlig falschen Denkansatz?PHP-Code:
$anzahl_zugeordneter_locations = mysql_num_rows( mysql_query ("
SELECT
*
FROM
HT_LOCATIONS_KATEGORIEN
JOIN
KATEGORIEN
ON
ht_kategorie_id = kategorie_id
WHERE
ht_kategorie_id = ................ ;
") );
Ich hoffe, ihr könnt mir da etwas weiter helfen.
MfG estebu
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Nein, das hat mich nicht glücklich gemacht, aber eine Variable in der Form
wobei diese "Datenbankabfrage" so aussieht:PHP-Code:
$Kat_ID = $row_Datenbankabfrage['location_id'];
PHP-Code:$query_Datenbankabfrage = "SELECT * FROM KATEGORIEN";
$Datenbankabfrage = mysql_query($query_Datenbankabfrage, $connect) or die(mysql_error());
$row_Datenbankabfrage = mysql_fetch_assoc($Datenbankabfrage);
$totalRows_Datenbankabfrage = mysql_num_rows($Datenbankabfrage);
Nun sieht die Abfrage für die jeweilige Anzahl wie folgt aus:
Das eigentlich Problem war, dass ich diese Variable und die dazugehörige Abfrage INNERHALB der Schleife einfügen musste und nicht, wie ich vorher annahm, irgendwo am Anfang der Seite, wo im Allgemeinen die Variablen zu finden sind.PHP-Code:
$anzahl_zugeordneter_locations = mysql_num_rows( mysql_query
("
SELECT
kategorie
FROM
HT_LOCATIONS_KATEGORIEN
JOIN
KATEGORIEN
ON
ht_kategorie_id = kategorie_id
WHERE
ht_kategorie_id = '$kat_ID'
;"));
Vielleicht kann man diesen Code noch weiter optimieren, aber zumindest funktioniert er jetzt.
Beste Grüße
estebu
Ist ja dann eigentich kein SQL-Problem sondern ein Programmierproblem. Weiter optimieren kann man das z. B. dadurch, ' statt " bei PHP-Strings zu verwenden.
Türlich kann man das optimieren. Indem man z. B. SELECT COUNT() nutzt statt erst mal alle Ergebnisse zu holen, nur um sie mittels mysql_num_rows() zu zählen.
Außerdem sollte man seine Eingaben quoten, deine Anwendung ist für SQL-Injections sperrangelweit offen.
Letztendlich könnte man das natürlich noch richtig optimieren, indem man PostgreSQL einsetzt - wenn man schon in einem PostgreSQL Forum nachfragt ;-)
Ansonsten bietet MySQL *Tschuldigung* Sun sicherlich auch kostenpflichtigen Support an.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen