Datenzeile nur 1x auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenzeile nur 1x auslesen

    Hallo,
    bei meinem skript kann ein besucher seinen namen und ort eintragen.
    Dieses wird in einer Tabelle gespeichert. jetzt möchte ich die letzten 6 Orte anzeigen und dahinter in einer Klammer den Namen des letzten Besuchers, der sich für diesen ort eingetragen hat.

    Sollte z.B. so aussehen:

    Hamburg (user1)
    Kiel (User 3)
    Lüneburg (User20)

    Und nicht wie aktuell
    Hamburg (user 1)
    Hamburg (user 2)
    Kiel (User 3)

    User 1 und 2 kommen aus Hamburg, es soll aber nur der letzte hinter Hamburg angezeigt werden.

    Meine Abfrage bisher:

    ich habe in einer mysql tabelle eine Zeile namens "ort".
    PHP-Code:
    $abfrage="    SELECT
                        id, name, ort
                FROM
                        1_wohnort
                ORDER BY
                        id desc
                LIMIT
                        6";
    $ergebnis=mysql_query($abfrage)    
    or die(mysql_errno().": ".mysql_error());
    ?>
    <table>
    <?php
        
    while($row mysql_fetch_array($ergebnis))
    {
    ?>
        <tr>
            <td>
            &middot; <?php echo $row["wohnort"]; ?>
    (<?php echo $row["name"]; ?>)
            </td>
        </tr>
    <?php
    }
    ?>
    </table>
    Jetzt werden werden natürlich die letzten angezeigt, egal ob gleicher wohnort oder nicht.
    Wie müsste da eine Unterabfrage lauten, damit ich keine doppelten Wohnorte habe, sondern immer nur den letzten besucher aus dem Ort?

    Ich hoffe es ist verständlich.

    Grüße,
    akrab
    Zuletzt geändert von akrab; 08.02.2006, 17:39.

  • #2
    PHP-Code:
    GROUP BY ort 
    Zuletzt geändert von piep83; 08.02.2006, 14:43.
    Computernotdienst Eisleben
    Softwarelösung für Rechtsanwälte und Notare

    Kommentar


    • #3
      Danke für die Antwort! Die Gruppierung klappt soweit schon gut, aber nun wird als Name der erste User angezeigt, der sich für den Wohnort eingetragen hat, und nicht der letzte. Wie bringe ich das noch mir ein?

      Grüße,
      akrab

      Kommentar


      • #4
        speicherst du zusätzlich in der Tabelle noch das Anmeldedatum?
        Computernotdienst Eisleben
        Softwarelösung für Rechtsanwälte und Notare

        Kommentar


        • #5
          Jep, das speicher ich in dem Format: 2006-01-24 20:50:34


          Ich habe soeben mal den usernamen durch die id ersetzt.
          da zeigt er die höchste an, aber wenn ich wieder den usernamen einsetze nimmt er wieder nicht den, der zur höchsten id passt.
          Hier die aktuelle abfrage:
          PHP-Code:
          $abfrage="    SELECT
                              max(id)as id, name, ort, created 
                      FROM
                              1_wohnort
                      GROUP BY
                              ort
                      ORDER BY
                              id desc
                      LIMIT
                              6"

          Er findet irgendwie nicht den username der höchsten id.

          Kommentar


          • #6
            Ich hab es nun gelöst, aber wohl sehr ungeschickt.
            Habe in der while-Schleife noch eine 2. abfrage gemacht:

            PHP-Code:
            while($row mysql_fetch_array($ergebnis))
            {
             
            $abfrage2="Select user from 1_wohnort where id = (select max(id) from 1_wohnort where ort=".$row["ort"].")";
                                
            $ergebnis2=mysql_query($abfrage2
                or die(
            mysql_errno().": ".mysql_error());
                
            $row2 mysql_fetch_array($ergebnis2); 
            ...


            Wie kann man das geschickter schreiben? Vielleicht gleich in die 1. Abfrage mit rein??

            Kommentar


            • #7
              probier mal so,

              PHP-Code:
              SELECT DISTINCT id,name,ort FROM 1_wohnort ORDER BY id DESC LIMIT 6 
              Computernotdienst Eisleben
              Softwarelösung für Rechtsanwälte und Notare

              Kommentar


              • #8
                Klappt leider nicht. Musste zudem auch ein group by reinnehmen. Hab sonst eine Fehlermeldung:
                1140: Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no
                GROUP columns is illegal if there is no GROUP BY clause

                hab daher group by ort wieder reingenommen.
                Klappte aber leider dann auch nicht.

                Kommentar


                • #9
                  hoffe du hast mich jetzt nicht falsch verstanden - bei mir kommt
                  keine Fehlermeldung. Solltest den query einzeln nehmen.

                  PHP-Code:
                  $abfrage="SELECT DISTINCT id,name,ort FROM 1_wohnort ORDER BY id DESC LIMIT 6" 
                  Computernotdienst Eisleben
                  Softwarelösung für Rechtsanwälte und Notare

                  Kommentar


                  • #10
                    Ich habe deine Abfrage durch meine ersetzt.
                    Es werden mir die Orte angezeigt (neuster oben, wie es sein muss) aber die Namen sind weiterhin die, die als ersten drin waren.

                    Kommentar

                    Lädt...
                    X