2017-03-22 2 views
0

Ich habe den folgenden Code:Mit zwei Werten aus unterschiedlicher Tabelle als Datumsbereich in Abfrage

<?php 
$result = $db->query("select sum(hol_count) as TOTALBOOKEDHOLIDAYS from holidays"); 
$row = $result->fetch_row(); 
echo $row[0]; 
?> 

Dies hat eine Anzahl von hol_count und gibt den berechneten Wert. Ich habe eine separate Tabelle namens 'config' und zwei Spalten: 'hol_year_start' und 'hol_year_end', die den Datumsbereich festlegen. Ich versuche, diese beiden Werte in die Abfrage einzubeziehen, habe aber eine Reihe von Fehlern festgestellt, während ich eine Reihe von verschiedenen Möglichkeiten ausprobiert habe, um dies zu erreichen. Ich habe versucht, die zwei Werte als Variablen zu definieren und dann diese Variablen mit BETWEEN zu verwenden, um die Anzahl zwischen den Wer-Datumsbereichen zu zählen. Ich halte einen Fehler immer in Bezug auf $row = $result->fetch_row(); sowie versucht, die folgenden:

("select sum(hol_count) as TOTALBOOKEDHOLIDAYS from holidays 
BETWEEN 
(SELECT hol_year_start FROM config) 
AND 
(SELECT hol_year_end FROM config))" 

Ich weiß, das wahrscheinlich etwas sehr einfach ist, aber ich kann nicht scheinen, nur die beiden Werte zu definieren, als Variablen sie dann in der Abfrage verwenden, um das Abrufen benötigte Daten.

Was wäre der richtige Weg, um die zwei Werte aus der Config-Tabelle zu definieren, dann verwenden Sie sie in der Abfrage, hol_count aus der Feiertagstabelle zu zählen?

Antwort

1

Sie sehen, Sie vermissen die WHERE in Sie abfragen. Außerdem müssen die Subselects nur ein Ergebnis zurückgeben. Wenn Sie MySQL verwenden, müssen Sie LIMIT 1 setzen.

SELECT SUM(hol_count) AS TOTALBOOKEDHOLIDAYS FROM holidays 
WHERE date_field_name 
BETWEEN (SELECT hol_year_start FROM config LIMIT 1) 
AND (SELECT hol_year_end FROM config LIMIT 1) 
Verwandte Themen