alkativo: MySQL Abfrage Optimieren

Hallo Leute,

angenommen ich habe ein Array mit verschiedenen IDs, welches erzeugt wird:

$ids=array(1,4,5,6,7);

Das soll jetzt genau die Datensätze aus der Datenbank holen

select feld1,feld2 FROM tabelle where id like $ids

Oder kann ich den Abfrage String erzeugen?

Bis dann
Al

  1. Hi,

    Oder kann ich den Abfrage String erzeugen?

    du könntest implode verwenden um die Einträge mit Komma voneinander getrennt auf einen String zu bringen und dann den IN-Operator zu benutzen:
    SELECT feld1, feld2 FROM tabelle WHERE id IN ( $idstring )

    Der LIKE-Operator wird dich nicht weiterbringen, oder du hast was vor das mir gerade nicht einleuchtet.

    MfG
    Rouven

    --
    -------------------
    He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
    1. Hi Rouven,

      ich probiere das gleich mal aus...

      Bis du eigentlich in Hamburg
      Bis dann
      Al

      1. Ist nicht ganz so leicht, weil das Array mehrdimensional ist...

        <?php
         $datei=file('log/logdb.dta');
         //echo $datei[0];

        $alle_aufrufe=explode("|",$datei[0]);

        //Anzahl der aufgerufenen Artikel
         $anz = count($alle_aufrufe);

        echo "Gesamte Zahl an geklickten Artikeln (auch mehrfach) <br><b>$anz</b><br>";
         //reduzieren auf Anzahl

        $artikel_und_anzahl = array();

        $articel_anzahl = array_count_values($alle_aufrufe);

        foreach ($articel_anzahl as $k => $v) {
                array_push($artikel_und_anzahl,array('artikel'=>$k,'anzahl'=>$v));
          //printf("k=%s v=%s<br>\n", $k, $v);
            }

        echo "<br><br><b>soriert</b><br><br>";

        //Sortierfunktion
            foreach($artikel_und_anzahl as $res){
             $sortAux[] = $res['anzahl'];
            }

        //Sortierung des Arrays nach der Anzahl der Treffer
         array_multisort($sortAux, SORT_DESC, $artikel_und_anzahl);

        //Erzeugung der Abfrage
         $comma_separated = implode(",", $artikel_und_anzahl['artikel']);

        echo $comma_separated;
            //foreach ($artikel_und_anzahl as $value){
             //echo $value['anzahl']." ".$value['artikel']."<br>";
            //}

        ?>

        1. Hello,

          Ist nicht ganz so leicht, weil das Array mehrdimensional ist...
          [...]

          äh, auf den Rest hab ich gerade keine Lust mehr. Wenn das Array von der Komplexität her nicht zu implode passt, dann wirst du es über eine for(each) Schleife machen müssen. Nimm halt einen leeren String und füge die Einträge Komma-getrennt aneinander...

          @Hamburg: Wieso Hamburg??

          MfG
          Rouven

          --
          -------------------
          He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
        2. Hallo,

          //Sortierung des Arrays nach der Anzahl der Treffer
          array_multisort($sortAux, SORT_DESC, $artikel_und_anzahl);

          könntest Du bitte anhand konkreter Beispieldaten erklären, was Du damit bezweckst, denn einem SQL-Statement mit IN und der Wertliste ist es völlig gleichgültig,

          //Erzeugung der Abfrage
          $comma_separated = implode(",", $artikel_und_anzahl['artikel']);

          in welcher Reihenfolge die Werte in der Liste stehen. Danach wird _nicht_ sortiert. Vielleicht kann Dir für Deine Sortierung der Artikel Sortierfolgen in MySQL vorgeben weiterhelfen. Du solltest uns einfach anhand von Beispieldaten Deiner Tabelle angeben, welche Daten vorliegen, welches Ergebnis Du gerne hättest, in welcher Reihenfolge - und warum. Dann könnten wir Dir viel besser weiterhelfen.

          Apropos Hamburg: nach meinen Informationen solltest Du eher in der Liste älterer Städte nachsehen.

          Freundliche Grüße

          Vinzenz

          1. Hi Vinzenz,

            Apropos Hamburg: nach meinen Informationen solltest Du eher in der Liste älterer Städte nachsehen.

            *lol*, I'm deeply impressed! Gutes Gedächtnis!

            MfG
            Rouven

            --
            -------------------
            Buy when there's blood running in the street and sell when everyone is pounding at your door, clawing to own your equities  --  Wisdom on Wallstreet