mysql: Zwei Tabellen mit werktäglichen und wöchentlichen Daten abfragen

PS: Ich sehe erst jetzt, was Du hiermit gemeint hast:
Allerdings muss ich in der php-abfrage für comshort jetzt den ganzen select einbauen (select comshort from `cot-data` where market_id=prices.market_id and update_date=prices.update_date) Gibt es da eine elegantere Lösung?
Ja, da gibt es eine elegantere Lösung, und zwar dem Ergebnis der Subquery ein Alias geben:
PHP:
"SELECT *,
    (select comshort from `cot-data`
        where market_id=prices.market_id and update_date=prices.update_date
    ) cs
    FROM `prices` WHERE `act_contract` = 'act' AND `market_id`= '10'
";
Dann kannst Du bei der Auswertung mit dem Alias darauf zugreifen.
 
In der Tat, deutlich schöner. Vielen Dank!! Und Du hast Recht, das Ganze ist etwas träge, deshalb lasse ich ein json abspeichern und greife darauf zu.
 
Wieso soll es mit einem LEFT JOIN nicht gehen?
Dein Bock ist hier:
SQL:
$query =   "SELECT * FROM `prices`
            LEFT JOIN `prices`
            ON `prices`.`update_date` = `cot-data`.`update_date`
            WHERE `prices`.`market_id` = '10'
            AND `prices`.`act_contract` = 'act'
            AND `cot-data`.`market_id` = '10'
            ";
Dein Select geht auf 'prices' welches du dann per Kreisverkehr wieder mit 'prices' LEFT JOINst
Aircode:

Code:
$query =   "SELECT * FROM `prices`
            LEFT JOIN `cot-data`
            ON `prices`.`update_date` = `cot-data`.`update_date`
            AND
            `prices`.`market_id`=`cot-data`.`market_id`
            WHERE `prices`.`act_contract` = 'act'        
            ";

EDIT: Nachtrag: Da du ein SELECT * machst (und somit das volle Brett holst), nur um dann auf der client-seite dir dein Array zusammenzubasteln, würde ich an deiner Stelle eher auf dem Server eine View definieren nur mit den Spalten, welche du auch tatsächlich brauchst. Funktioniert natürlich nur, sofern der WHERE-Teil deiner Abfrage static ist.
Es macht schon einen Unterschied, ob du 4K Bytes pro Zeile, oder eben nur 200B pro Zeile durch die Leitung drückst.
 
Zuletzt bearbeitet:
Zurück