2011-11-16 6 views
0

ここでは、名前のついたmysqlテーブルから値を取得しようとしています。日付範囲は2つの変数に格納されます。両方のステータスの値をmysqlの同じフィールドから取得する

開始日は$ fromに格納され、終了日は$ toに格納されます。

ステータスは、テーブルリードのフィールドです。

私は次のクエリを試みたが、期待通りのが機能していない

を支払った日付範囲内のデータ、ステータスのホットとステータスを取得したいです。どこが間違っているのか教えてください。

select * from lead 
WHERE added_on >= '$from' AND added_on <= '$to' AND 
    status='Hot' AND status='Paid' 
+0

期待どおりに機能していないとします。どうやって? –

答えて

1

複数の可能な値を確認するために "IN" を使用します。

SELECT * 
FROM `lead` 
WHERE 
    (`added_on` >= '$from' AND `added_on` <= '$to') 
    AND `status` IN ('Hot', 'Paid') 
+0

ありがとうTiuTalk ..それは働いた:) –

3

ステータスは熱くなり、同時に支払うことができません。

ステータスは「ホット」または「有料」です。あなたはおそらく、ステータスが「ホット」または「有料」で、「ホット」および「有料」ではないとします。

select * from lead 
WHERE added_on >= '$from' AND added_on <= '$to' AND 
    (status='Hot' or status='Paid') 
+0

私は新しい眼鏡が必要だと思います。私は最後の節を見ていませんでした。 –

+0

ええと...それはできません..それはユーザーの選択ボックスからです。ユーザは、ホットまたは有料のいずれかを選択することができる。フェッチされた行を日付範囲の間に置いて、ホットまたは有料のいずれかのステータスを含める必要があります。 –

+0

次に、ステータスとしてパラメータとして渡す必要があります。したがって、あなたの構文に固執するとき、status = '$ status'。 –

1

私はあなたがおそらくこれを行うためのもの推測している:

SELECT * FROM lead 
WHERE added_on BETWEEN '$from' AND '$to' 
AND status IN ('Hot','Paid') 

あなたの基準が適用されて考えてみて各レコードはそれ自体で前回のポスターが正しく言ったように、「ステータスは熱くなり、同時に支払うことはできません」

基本的に、これは「ホット」または「有料」のすべてのレコードを返します。

関連する問題