2017-10-07 10 views
0

私はかなり新しいSQLですので、私に同行してください。私は特定の日付内にあるすべてのレコードを出力するSQLでクエリを書き込もうとしています。特定の日付の間にecordsを選択して注文するSQL

これは、あなたがWHERE句ではないORDER BY使用したいと思う私は、現時点では持っているが、それは

SELECT 
    `Item`.`Item`, `products`.`date` 
FROM 
    `Item` 
LEFT JOIN 
    `products` ON `products`.`ItemCode` = `Item`.`ItemCode` 
ORDER BY 
    `products`.`date` >= '2017/02/25' AND `products`.`date` <= '2017/02/27' 
+2

タグ使用している特定の種類のSQL:MySQL、PostgreSQLなど? – treyhakanson

+0

あなたのクエリは、バッククォートのためMySQLが非常にはっきりしているので、MySQLでタグ付けする必要があります。常にdbmsのタイプを指定してください –

答えて

1

動作しないコードです:

SELECT `Item`.`Item`, `products`.`date` 
FROM `Item` 
    LEFT JOIN `products` ON `products`.`ItemCode` = `Item`.`ItemCode` 
WHERE `products`.`date` >= '2017/02/25' AND `products`.`date` <= '2017/02/27' 

ORDER BYが使用されていますクエリの結果を並べ替えるには、WHEREを使用して、クエリによって実際に取得される行を制限します。

1

あなたがしたい行だけを取得するためにWHEREを使用する必要がありますし、あなたもBETWEENを使用して、クエリの最後にORDERを追加することができます。

SELECT `Item`.`Item`, `products`.`date` 
FROM `Item` 
JOIN `products` ON `products`.`ItemCode` = `Item`.`ItemCode` 
WHERE `products`.`date` BETWEEN '2017/02/25' AND '2017/02/27' ORDER BY products.date ASC 
1

その他のためwhereorder byを正しく交換しました

私はSQLでクエリを作成しようとしている出力のすべてのレコードは、特定の日付範囲内に ます:クエリが、私は、クエリの別の部分を議論したいです。

これは明らかではないかもしれませんが、データの「精度」がその日付範囲をどのように達成するのに最適かに影響します。 、あなたのデータが第2(またはミリ秒)に正確であるしかし、もし

 
    2017/02/24
    2017/02/25 
    2017/02/26 
    2017/02/27 
    2017/02/28 

あなたの異なった結果が得られます。たとえば、あなたのデータは日付だけに正確であるならば、WHERE products.date >= '2017/02/25' AND products.date <= '2017/02/27'またはWHERE products.date BETWEEN '2017/02/25' AND '2017/02/27'は以下のわずか3つの太字の行を選択しますちょうど2大胆な行

 
    2017/02/24 12:13:14
    2017/02/25 12:13:14 
    2017/02/26 12:13:14 
    2017/02/27 12:13:14 
    2017/02/28 12:13:14 

範囲がbetwen使用しない日付や組み合わせについて正確であると> =と< =(間には> =と< =のための単なるショートカットです)。代わりにこれを使用します。

LESS THAN(大きな日付+ 1)を使用して
SELECT `Item`.`Item`, `products`.`date` 
FROM `Item` 
    LEFT JOIN `products` ON `products`.`ItemCode` = `Item`.`ItemCode` 
WHERE `products`.`date` >= '2017/02/25' AND `products`.`date` < '2017/02/28' 
 
    2017/02/24 12:13:14
    2017/02/25 12:13:14 
    2017/02/26 12:13:14 
    2017/02/27 12:13:14 this is less than '2017/02/28' 
    2017/02/28 12:13:14 

は関係なく、日付/時刻の範囲の正確な結果を得る格納されたデータの日付/時刻の精度を保証しません。

関連する問題