Ergebnis 1 bis 6 von 6

Thema: Gleiche Zuordnungen zusammenzählen

  1. #1
    estebu ist offline Neuer Benutzer
    Registriert seit
    13.03.2009
    Beiträge
    2

    Standard Gleiche Zuordnungen zusammenzählen

    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:

    PHP-Code:

    $anzahl_zugeordneter_locations 
    mysql_num_rowsmysql_query ("

    SELECT 

        *
         
    FROM 

        HT_LOCATIONS_KATEGORIEN

    JOIN 

        KATEGORIEN
        
        ON 
        
        ht_kategorie_id = kategorie_id
        
        WHERE
        
        ht_kategorie_id = ................    ;

        
        
        
        "
    )  ); 
    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?

    Ich hoffe, ihr könnt mir da etwas weiter helfen.

    MfG estebu

  2. #2
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von estebu Beitrag anzeigen
    Hallo und guten morgen,

    ich hoffe, daß ich hier richtig gelandet bin
    Nein. Hier geht es weder um MySQL noch um PHP. Das kleine SQL-Problem anhand uns unbekannter Tabellenstruktur zu lösen bin ich grad zu beschäftigt...

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Nein. Hier geht es weder um MySQL noch um PHP. Das kleine SQL-Problem anhand uns unbekannter Tabellenstruktur zu lösen bin ich grad zu beschäftigt...

    Andreas
    Möglicherweise machen Dich COUNT und GROUP BY glücklich.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  4. #4
    estebu ist offline Neuer Benutzer
    Registriert seit
    13.03.2009
    Beiträge
    2

    Standard

    Nein, das hat mich nicht glücklich gemacht, aber eine Variable in der Form

    PHP-Code:

    $Kat_ID 
    $row_Datenbankabfrage['location_id']; 
    wobei diese "Datenbankabfrage" so aussieht:
    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:

    PHP-Code:

    $anzahl_zugeordneter_locations 
    mysql_num_rowsmysql_query 

    ("

    SELECT 

        kategorie
         
    FROM 

        HT_LOCATIONS_KATEGORIEN

    JOIN 

        KATEGORIEN
        
        ON 
        
        ht_kategorie_id = kategorie_id
        
        WHERE
        
        ht_kategorie_id = '
    $kat_ID'

        ;"
    )); 
    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.

    Vielleicht kann man diesen Code noch weiter optimieren, aber zumindest funktioniert er jetzt.

    Beste Grüße
    estebu

  5. #5
    Avatar von progs
    progs ist offline Super-Moderator
    Registriert seit
    26.11.2005
    Ort
    Kulmbach, Bayern, Germany, 108121049209415, Kulmbach
    Beiträge
    185

    Standard

    Ist ja dann eigentich kein SQL-Problem sondern ein Programmierproblem. Weiter optimieren kann man das z. B. dadurch, ' statt " bei PHP-Strings zu verwenden.

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    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

Ähnliche Themen

  1. Mehrere Zuordnungen aber exklusiv
    Von maxx im Forum Allgemeines
    Antworten: 4
    Letzter Beitrag: 04.06.2010, 02:33
  2. Antworten: 3
    Letzter Beitrag: 24.02.2009, 21:28
  3. Antworten: 1
    Letzter Beitrag: 05.08.2008, 13:52
  4. Gleiche Tabellen gemeinsam ausgeben
    Von Serpina im Forum SQL
    Antworten: 2
    Letzter Beitrag: 18.09.2007, 11:27
  5. Zeile kopieren in gleiche Tabelle
    Von nylen im Forum SQL
    Antworten: 5
    Letzter Beitrag: 09.03.2007, 14:36

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum