1 Tabelle - 2 Abfragen - UNION

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

  • 1 Tabelle - 2 Abfragen - UNION

    Hallo,

    habe eine Tabelle counter.

    Nun möchte ich alle Einträge raussuchen, die von heute sind
    und die selbe session haben. Also das jeder besucher nur einmal gezählt wird.

    Aber wenn ich

    SELECT * FROM counter WHERE datum LIKE '20061214%'
    UNION
    SELECT DISTINCT session FROM counter

    abfragen will, dann kommt

    #1064 - You have an error in your SQL syntax near 'UNION
    SELECT DISTINCT session FROM counter LIMIT 0, 30' at line 2

    Wie muß ich die Abfrage denn schreiben?
    Hab jetzt schon fast alles durch.

    ps:
    Das sind die Spalten der Tabelle
    id,
    seite,
    datum,
    cookie,
    anzahl,
    referer,
    port,
    sprache,
    browser,
    host,
    session,
    ip
    Gut geraten ist halb gewußt.

  • #2
    Abgesehen von der Syntax ist UNION schon der falsche ansatz.

    Nun möchte ich alle Einträge raussuchen, die von heute sind
    und die selbe session haben. Also das jeder besucher nur einmal gezählt wird.
    was denn jetzt?

    SELECT * FROM counter WHERE datum LIKE '20061214%' AND session = 'x'

    oder

    SELECT DISTINCT session , ... FROM counter WHERE datum LIKE '20061214%'


    BTW:
    Code:
    datum LIKE '20061214%'
    Igitt!!!!

    Kommentar


    • #3
      Vermutlich meint er eher: Alle von Heute, nach Session gruppiert, jeweilige Anzahl ggf. gezählt.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Ich kann ihn verstehen:
        Wenn man nicht weiß, was man will,
        kann man auch nicht wissen, wie es geht...

        Kommentar


        • #5
          Re: 1 Tabelle - 2 Abfragen - UNION

          Original geschrieben von martinm79

          Nun möchte ich alle Einträge raussuchen, die von heute sind
          und die selbe session haben. Also das jeder besucher nur einmal gezählt wird.
          Was ist daran falsch ausgedrückt?

          Nur wenn ich SELECT DISTINCT session benutze, dann kann ich ja nur die
          session Spalte raussuchen. Ich möchte aber alle Spalten von heute haben.

          Wen nicht UNION was/wie dann?
          Gut geraten ist halb gewußt.

          Kommentar


          • #6
            Original geschrieben von wahsaga
            Vermutlich meint er eher: Alle von Heute, nach Session gruppiert, jeweilige Anzahl ggf. gezählt.
            He he... nach Session gruppiert?

            Wenn ich die Daten nach Session gruppiere, zeigt er mir die gleichen Session mehrmals an, oder immer nur verschiedene und läst die doppelten weg?

            Die Einträge kamen ja so zu stande.
            1. Benutzer betritt index.php
            2. Benutzer betritt info.php
            3. Benutzer betritt anmelden.php

            Und auf jeder Seite fügt er eine Zeile in die db counter mit allen Daten vom Benutzer. Mithilfe der Session kann ich ja die einzelnen Benutzer ja gut unterscheiden, deswegen muß ich die doppelten Einträge nicht alle anzeigen.
            Gut geraten ist halb gewußt.

            Kommentar


            • #7
              Definiere doppelte einträge.

              Kommentar


              • #8
                Hab jetzt mal zum Beipspiel 4 Einträge aus dieser Datei genommen.
                Als CSV dargestellt mit Simikolon als trennzeichen.

                PHP-Code:
                /*
                id;  seite;  datum;  cookie;  anzahl;  referer;  port;  sprache;  browser;  host;  session;  ip  
                30476;/home/index.php;20061216110701;1;1;;58375;;Python-urllib/2.1;web.efi-re.de;f994f643e6946762da254551cd3a6d78;195.226.187.21
                30477;/home/feedback.php;20061216110701;1;1;;58376;;Python-urllib/2.1;web.efi-re.de;f994f643e6946762da254551cd3a6d78;195.226.187.21
                30478;/home/kontakt.php;20061216110701;1;1;;58378;;Python-urllib/2.1;web.efi-re.de;f994f643e6946762da254551cd3a6d78;195.226.187.21
                30479;/privat/index.php;20061216110701;1;1;;58382;;Python-urllib/2.1;web.efi-re.de;f994f643e6946762da254551cd3a6d78;195.226.187.21

                */ 
                Und in der Spalte session sieht man, das alle Einträge von einem User/Crawler kommen.
                Das meinte ich mit doppelten Einträgen.
                Also will ich alle Einträge, die von dieser Session kommen, bei der Ergebnisaugabe nur
                einmal anzeigen.

                Deswegen wollte ich mittels UNION 2 Abfragen machen.
                Einmal nach Zeitlichem Raum und das andere nach DISTINCT session.
                Das ging aber nicht.
                Hoffe Ihr versteht jetzt was ich meine.
                Gut geraten ist halb gewußt.

                Kommentar


                • #9
                  aha, also doch nur pro session einen eintrag.

                  Kommentar


                  • #10
                    Wie gestalte ich denn die SQL Abfrage am besten?
                    Das Hauptproblem was ich habe, ist wenn ich DISTINCT session abfrage, denn kann ich immer nur die Session abfragen. Ich möchte aber alle Spalten in der Abfrage haben und nicht nur die einzelnen Sessions.
                    Gut geraten ist halb gewußt.

                    Kommentar


                    • #11
                      Wer sagt das? Wo steht das? Wie äußert sich das?

                      Kommentar


                      • #12
                        Hat keiner gesagt, aber ich habe es angenommen, weil ich bei den Abfragen immer Fehlermeldungen bekamm.

                        Es äußert sich so.

                        Ich frage
                        SELECT DISTINCT session FROM counter

                        und er gibt mir alle session wieder. Aber auch nur die sessions, ist mir ja aber auch klar, weil ich ja nur nach session gefragt habe.

                        Wenn ich aber jetzt

                        SELECT datum, DISTINCT session FROM counter
                        abfrage, dann kommt eine Fehlermeldung.

                        #1064 - You have an error in your SQL syntax near 'DISTINCT session FROM counter

                        Wie muß ich denn die Abfrage verändert?
                        Gut geraten ist halb gewußt.

                        Kommentar


                        • #13
                          naja, hauptsache du hast das schon gestern stur behauptet, dass es so wäre anstatt unsere tipps zu hinterfragen.

                          http://dev.mysql.com/doc/refman/5.0/en/select.html

                          Kommentar


                          • #14
                            PHP-Code:
                            SELECT INTO OUTFILE 'session.csv'
                            FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
                            FROM counter 
                            Da füge ich noch meine WHERE abfrage ein und denn wird eine
                            csv Datei erstellt.
                            Diese Csv Datei lese ich denn in ein Array
                            und schließe die doppelten sessions Einträge aus.
                            Oder wie?

                            Und wenn ich das so mache,
                            denn liegt ja die Datei im data Ordner von mysql.
                            Wie komm ich da ran?
                            Denn muß ich die Datei temporär speichern das die Scripte daurauf zugreifen können oder wie?
                            Gut geraten ist halb gewußt.

                            Kommentar


                            • #15
                              na hauptsache, da taucht auf einmal ne csv-datei auf und keiner weiß woher oder was das mit dem problem zu tun hat...

                              Was hat es damit zu tun? Tut mir leid, wenn ich heute ein bisschen ungeduldig bin...

                              Kommentar

                              Lädt...
                              X