MySQL Abfrage Optimieren
alkativo
- php
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
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
Hi Rouven,
ich probiere das gleich mal aus...
Bis du eigentlich in Hamburg
Bis dann
Al
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>";
//}
?>
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
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
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