+ Antworten
Ergebnis 1 bis 4 von 4

Thema: [SQL] Schmerzen mit JOIN

  1. #1
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289

    [SQL] Schmerzen mit JOIN

    Hallo!

    ich habe folgende zwei Tabellen in einer MySQL-DB (vereinfacht zum besseren Verständnis):
    Code:
    Tabelle 1: Texte
     text_id | text
    
    Tabelle 2: Kommentare
     kommentar_id | kommtentar | text_id
    Nun möchte ich gerne neben dem Text der Tabelle Text auch ausgeben, wie viele Kommentare es zu ebendiesem Text gibt.
    Gedacht habe ich mir das folgendermaßen:
    Code:
    SELECT tx_mmfrageantwort_threads.thread_text, count(tx_mmfrageantwort_comments.uid) AS anz 
    FROM tx_mmfrageantwort_threads 
    LEFT JOIN tx_mmfrageantwort_comments ON tx_mmfrageantwort_comments.thread_id WHERE tx_mmfrageantwort_threads.uid = tx_mmfrageantwort_comments.thread_id 
    GROUP BY tx_mmfrageantwort_threads.uid
    Leider erhalte ich so nur genau die Texte, zu denen es auch Kommentare gibt - was wenig sinnvoll ist. Ich habe es auch schon mit "LEFT OUTER JOIN" probiert, der ja eigentlich mit NULL auffüllen sollte, wenn es keine Entsprechungen in der Kommentar-Tabelle gibt. Leider gibt auch diese Version nur die Texte mit Kommentaren zurück.

    Wisst Ihr Rat? Liegt es an MySQL?

    Vielen Dank.
    ...zur Zeit außer Betrieb...

  2. #2
    TP-Specialist phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts phpBuddy ist einer der Eckpfeiler des TP - ohne ihn geht nichts Avatar von phpBuddy
    Registriert seit
    Aug 2004
    Ort
    Kaiserslautern
    Beiträge
    4.678
    Hallo Moritz,

    steht MySQL 4.1 oder höher zur Verfügung? Dann könntest Du das mit einem Subselect machen.
    Code:
    SELECT `text_id`, `text`,
    	(SELECT COUNT(`kommentar_id`)
    		FROM `Kommentare`
    		WHERE `text_id` = `Texte`.`text_id`) as anzahl
    	FROM `Texte`

  3. #3
    TP-Senior Moritz macht sich hier sehr viel Mühe
    Registriert seit
    Nov 2002
    Beiträge
    289
    Ja, steht zur Verfügung. Was mich allerdings wundert, ist, dass meine Abfrage nur die Einträge zu Tage fördert, die auch Kommentare enthalten.

    Merkwürdig merkwürdig.

    Trotzdem vielen Dank für deine Antwort - ich machs dann einfach so...
    ...zur Zeit außer Betrieb...

  4. #4
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    ich mein es liegt an Deiner ON-Anweisung
    Code:
    SELECT t.thread_text, count(c.uid) AS anz 
    FROM tx_mmfrageantwort_threads t
    LEFT JOIN tx_mmfrageantwort_comments c 
    ON t.uid = c.thread_id 
    GROUP BY t.uid
    btw - da das offensichtlich TYPO3 ist, hast Du doch die Anzahl der Referenzen in der Haupttabelle stehen, benötigst also kein count


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


+ Antworten

Stichworte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51