Datenzeile nur 1x auslesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by akrab; 08-02-2006, 16:39.

  • #2
    PHP Code:
    GROUP BY ort 
    Last edited by piep83; 08-02-2006, 13:43.
    Computernotdienst Eisleben
    Softwarelösung für Rechtsanwälte und Notare

    Comment


    • #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

      Comment


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

        Comment


        • #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.

          Comment


          • #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??

            Comment


            • #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

              Comment


              • #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.

                Comment


                • #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

                  Comment


                  • #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.

                    Comment

                    Working...
                    X