kostenloser Webspace werbefrei: lima-city


MySQL Join verwenden

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    epiaa85

    epiaa85 hat kostenlosen Webspace.

    Hallo,

    undzwar hab ich folgendes Problem:

    Ich möchte aus der news und news_comments tabelle was auslesen.
    Aus der news tabelle halt die news und aus der news_comments tabelle halt die kommentare.

    Jedoch möchte ich noch das bei den news steht "xxx Kommentare" .
    Wie kann ich das JOIn so werden das er mir die daten ausgibt und gleichzeitig die datensätze in news_comments zählt die zu der ID der news passt.

    Gruß Epiaa
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Mal angenommen in news und news_comments existiert eine Spalte mit dem Namen id und in news eine spalte nachrichten und in news_comments eine Spalte kommentare.
    $deineid ist eine variable die du mit der id befüllen musst.
    SELECT news.nachrichten , news_comments.kommentare, COUNT( news_comments.kommentare) AS "anzahlkommentare" FROM news,news_comments  WHERE id = $deineID


    ungetestet, am besten testest du das in Deinem mysql zugang.

    Edit:
    code korrigiert nachdem ich ihn überflogen habe.... (sum durch count ersetzt)

    Beitrag zuletzt geändert: 24.9.2010 20:39:22 von simuliertes
  4. Autor dieses Themas

    epiaa85

    epiaa85 hat kostenlosen Webspace.

    Hallo,

    danke für die schnelle antwort jedoch weiß ich gerade nicht was du mit "anzahlkommentare" meinst...

    id
    news_id
    name
    email
    comment


    Soe sieht meine news_comments tabelle aus.

    SELECT news.date, news.posted_by, news.categorie, news.title, news.beitrag, news_comments.news_id, news_comments.name, news_comments.email, news_comments. comment, COUNT( news_comments.news_id) AS "anzahlkommentare" FROM news,news_comments  WHERE news_id = $deineID



    meine frage ist woher ich das WHERE news_id='' bekomme ...
  5. Ich weiß jetzt zwar nicht ganz genau, worauf du hinaus willst. Aber versuche doch die Einträge zu Gruppieren nach news_id über GROUP BY und dann das ganze zu zählen über COUNT.

    So in etwa:
    SELECT   news.news_id, news.date, news.posted_by, news.categorie, 
             news.title, news.beitrag, news_comments.name, news_comments.email, 
             news_comments.comment, COUNT(comment) AS "comment_count" 
    FROM     news, news_comments 
    WHERE    news.news_id = news_comments.news_id;
    GROUP BY news.news_id;


    Beste Grüße
    Christopher

    Beitrag zuletzt geändert: 25.9.2010 14:06:32 von schaedlich
  6. epiaa85 schrieb:
    Hallo,
    danke für die schnelle antwort jedoch weiß ich gerade nicht was du mit "anzahlkommentare" meinst...


    anzahlkommentare ist ein alias (durch das "as").
    Sprich es existiert natürlich nicht in Deiner Tabelle enthält aber die summe aller kommentare (dieser id).
    Du kannst sie wie einen tabelleneintrag abrufen.
    anzahlkommentare = anzahl der kommentare, irgendwie logisch oder ? :wink:




    mmhh ok also ich versuche mal wiederzuzgebven was Du willst:
    Du willst eine news mit einer id (die dir bekannt ist) aufrufen.
    Passend dazu alle kommentare die zu der news abgegeben wurden.
    UND die anzahl der Kommentare zu dieser news.


    meine frage ist woher ich das WHERE news_id='' bekomme ...

    die namen "news_id" sind ja in beiden Tabellen identisch.
    Also könntest Du..
    WHERE    
    news.news_id = $deineID
    AND
    news_comments.news_id= $deineID

    ...schreiben.
    Oder verkürzt:
    WHERE    
    news_id = $deineID


    Oder willst Du alle news + comments +die jeweilige anzahl aufrufen?
    Dann sollte Dir der Code von schaedlich helfen

    edito:
    mal Deinen code korrigiert:

    SELECT
    news.date, news.posted_by, news.categorie, news.title, news.beitrag,
    news_comments.news_id, news_comments.name, news_comments.email, news_comments.comment,
    COUNT( news_comments.comment) AS "anzahlkommentare"
    FROM news,news_comments
    WHERE news_id = $deineID




    Beitrag zuletzt geändert: 25.9.2010 15:38:41 von simuliertes
  7. Autor dieses Themas

    epiaa85

    epiaa85 hat kostenlosen Webspace.

    <?
    $ergebnis = mysql_query('SELECT news.date, news.posted_by, news.categorie, news.title, news.beitrag, news_comments.news_id, news_comments.name, news_comments.email, news_comments.comment COUNT( news_comments.comment) AS "anzahlkommentare" FROM news,news_comments WHERE news.id ='. $row->id .' AND news_comments.news_id='. $row->id .'');
      while($row = mysql_fetch_object($ergebnis))
      {
    
        echo '<h1>'. $row->title .'</h1>';
        echo '<h3>Datum: '. $row->date .' | eingestellt von <a href="#">'. $row->posted_by .'</a></h3>';
        echo '<p>'. $row->beitrag .' <br /><a href="index.php?page=detail&id='. $row->id .'">Mehr ...</a></p>';
        echo '<p class="details">| Posted by <a href="#">'. $row->posted_by .'</a> | Kategorie: <a href="#">'. $row->categorie .'</a> | Comments: <a href="#">'. $anzahlkommentare .'</a> |</p>';
    }
    ?>



    So sieht mein script nun aus.

    edit:: So habe das Script mal nen bisschen überarbeitet ...

    leider muss ich feststellen das ich folgenden fehler bekomme

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/web2/html/test/inc/news.php on line 3


    Beitrag zuletzt geändert: 26.9.2010 11:19:09 von epiaa85
  8. $row->news_id


    Wird trotzdem nicht funktionieren, nimm den code von schaedlich, ich rate jetzt mal das du das meintest :holy:
    Ich denke es wurde alles gesagt + gerätselt was genau du willst.
    Wie gesagt kannst Du sql-befehle bequem im mysql (phpmyadmin) testen.
    Verwaltung->Addons->Datenbank-Tools->phpMyAdmin ->einloggen->links oben das dritte Bild von links "Abfragefenster".

    Beitrag zuletzt geändert: 26.9.2010 11:31:55 von simuliertes
  9. Autor dieses Themas

    epiaa85

    epiaa85 hat kostenlosen Webspace.

    ne es funktioniert nicht ds ist ja mein problem ... es erscheint eine fehler meldung :

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/web2/html/test/inc/news.php on line 3


  10. Antwort siehe oben, ansonsten:
    http://www.bsro.tue.bw.schule.de/vb/vbhilfe/vb-hilfe/sql.htm
    http://www.little-idiot.de/mysql/mysql.html#toc28

    Edit:
    Also als ernst gemeinter tip:
    SChreib erst einmal Deinen Code und guck ob da irgendwo flüchtigkeitsfehler sind (komma vergessen , bezeichnung falsch usw. ).
    Dann teste ihn ausführlich , die fehlermeldung gibt Dir ja einen hinweis.
    In diesem fall ist was im sql-syntax falsch also sql-code seperat , wie bereits beschrieben testen, dort kommt ein detailierterer hinweis über die fehlerquelle.
    Wenn Dir gepostete befehle neu sind schau nach was sie bewirken , statt einfach zu raten, quellen gibts im www genug.
    Wenn das alles nichts hilft , im forum fragen.
    Dabei ist es nützlich die antworten auch zu lesen und fragen zu beantworten.


    Beitrag zuletzt geändert: 26.9.2010 12:01:39 von simuliertes
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!