Tricky Abfrage gesucht

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

  • Tricky Abfrage gesucht

    Hallo, jetzt hab ich mal ne Aufgabe

    habe eine Tabelle mit Einträgen folgender Art
    => Spalte Type Varchar(255)

    http://www.meinedomain.de/pfad/datei.html
    http://www.meinedomain.de/pfad/datei1.html
    http://www.meinedomain.de/pfad1/datei.html
    http://www.meinedomain2.de/pfad/dati.html
    http://www.meinedomain2.de/pfad/dati.html
    ...


    nun brauch ich eine Abfrage, welche mir nur die Domains
    gibt, und dazu die Anzahl, wie oft diese Vorkommen also:

    4 www.meinedomain.de
    2 www.meinedomain2.de
    ...


    PS: KEINE Änderung der DB möglich, ist ne Kunden DB
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

  • #2
    erledigt
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Ich denke das einfachste ist, die domain mit einem regexp o.ä. rauszufischen (evtl. schon mit mysql), das ganze in ein array einzulesen und dann eine Funktion wie in etwa hier anwenden:
      http://www.php-resource.de/forum/sho...threadid=10447
      mfg

      Kommentar


      • #4
        hey TBT, da ist aber was falsch
        das sind nur 3 domains mit mainedomain.de nicht 4...

        mansch, hab mir jetzt so viel mühe gegeben und du has es auch

        select count(*), SUBSTRING_INDEX(SUBSTRING_INDEX(link,'//',-1),'/',1) as domain from test group by domain
        meine Projekte bestaunen: http://www.kleiza.de

        Kommentar


        • #5
          und...?

          Original geschrieben von TBT
          erledigt
          Glückwunsch.
          Willst du uns an deiner Erkenntnis teilhaben lassen?
          Würde mich schon interessieren.
          www.mi-ro.net

          Kommentar


          • #6
            Original geschrieben von Campus
            hey TBT, da ist aber was falsch
            das sind nur 3 domains mit mainedomain.de nicht 4...

            mansch, hab mir jetzt so viel mühe gegeben und du has es auch
            mainedomain ist sowieso nicht dabei

            habe diese Lösung gefunden
            Code:
            SELECT 
            	COUNT(*) AS Anzahl, 
            	SUBSTRING(ref_url,8,LOCATE('/',SUBSTRING(ref_url,8,40))-1) AS Referer 
            FROM log_referer 
            GROUP BY Referer
            aber eventuell ist deine ja besser, weill sie eine Berechnung weniger macht.

            Muß ich testen
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              ich wollte auf der sicheren seite gehen
              0 http://www.meinedomain.de/pfad/datei.html
              1 http://www.meinedomain.de/pfad/datei1.html
              2 http://www.meinedomain.de/pfad1/datei.html
              3 http://www.meinedomain2.de/pfad/dati.html
              4 http://www.meinedomain2.de/pfad/dati.html
              5 www.domain3.de/index.php
              6 www.domain.de
              vielleicht sind ja in deine tabelle auch noch sowas ?

              ergebnis:
              1 www.domain.de
              1 www.domain3.de
              3 www.meinedomain.de
              2 www.meinedomain2.de

              meine ansätze sind von prinzip her nie schneller
              meine Projekte bestaunen: http://www.kleiza.de

              Kommentar


              • #8
                Wie ich es verstanden habe, sind in deiner Tabelle Referrer gespeichert. Und diese sind immer von der Form http://domain/seite

                Deshalb funktionieren beide Kommandos.
                Aber besser ist schon, immer das allgemeinere Skript einzusetzen.

                Übrigens: Sind Domain-Namen wirklich auf 32 Zeichen beschränkt?
                www.mi-ro.net

                Kommentar


                • #9
                  die Länge der Domainnamen ist natürlich nicht begrenzt,

                  werde heute abend zu Hause mal testen, was schneller ist.

                  Hier auf Arbeit schreibe ich alle Scripte im "Blindflug" ohne
                  Testmöglichkeit. Abends zu Hause folgt dann immer ein
                  kleiner Testlauf, eventuell ne Bugbehebung, und ein abhaken
                  des Problems
                  TBT

                  Die zwei wichtigsten Regeln für eine berufliche Karriere:
                  1. Verrate niemals alles was du weißt!


                  PHP 2 AllPatrizier II Browsergame

                  Kommentar


                  • #10
                    ich kanns ja mal kurz teste, weil es brennt mir auf den fingern..
                    meine Projekte bestaunen: http://www.kleiza.de

                    Kommentar


                    • #11
                      das wäre fein,

                      PS: die Tabelle ist derzeit 431 Datensätze groß,
                      und pro Tag kommen ca 10 dazu

                      jeweils so:


                      CREATE TABLE log_referer (
                      ref_date date NOT NULL default '0000-00-00',
                      ref_url varchar(255) NOT NULL default '',
                      ref_count int(10) unsigned NOT NULL default '0',
                      PRIMARY KEY (ref_date,ref_url)
                      ) TYPE=MyISAM;


                      ref_count ist dabei schon die Anzahl pro Tag, also muß darüber
                      die Summe gebildet werden
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar


                      • #12
                        also ich hab nur die reinen befehle getestet..
                        PHP-Code:
                        $link=mysql_connect();
                        mysql_select_db($link);
                        $query="select benchmark(100000,SUBSTRING_INDEX(SUBSTRING_INDEX('http://www.domain.de/index.php','//',-1),'/',1))";
                        $time=microtime();
                        mysql_query($query,$link);
                        echo 
                        "substring_index:".(microtime()-$time)."<br>";
                        $query="select benchmark(100000,SUBSTRING('http://www.domain.de/index.php',8,LOCATE('/',SUBSTRING('http://www.domain.de/index.php',8,40))-1))";
                        $time=microtime();
                        mysql_query($query,$link);
                        echo 
                        "substring:".(microtime()-$time)."<br>";
                        mysql_close($link); 
                        die ergebnisse sprechen für sich:

                        substring_index:0.088727
                        substring: 0.063358
                        meine Projekte bestaunen: http://www.kleiza.de

                        Kommentar


                        • #13
                          und je mehr / esgibt zb http://www.domain.de/index/dfgfdg/dfgfdg/sfdgfdsg.php

                          umso langsamer wird substring_index (doppelt so lang)
                          meine Projekte bestaunen: http://www.kleiza.de

                          Kommentar


                          • #14
                            also meine Variante doch schneller, obwohl eine Berechnung
                            mehr gemacht wird ?
                            TBT

                            Die zwei wichtigsten Regeln für eine berufliche Karriere:
                            1. Verrate niemals alles was du weißt!


                            PHP 2 AllPatrizier II Browsergame

                            Kommentar


                            • #15
                              tjo, substring_index ist aht wohl n langsamer algoryhtmus

                              aber jetzt kommt das non plus ultra:


                              Code:
                              mid(referer,8,locate('/',referer,8)-8)
                              nochmal an die 20 % schneller
                              hast du noch irgendwas, wo du ne tricky abfrage brauchst ?
                              hab langweile
                              meine Projekte bestaunen: http://www.kleiza.de

                              Kommentar

                              Lädt...
                              X