0

これが私が達成したいことです:

SELECT  * 
FROM  ventas WHERE (
posicion = 'cc21' 
AND inic < NOW() 
AND fin > NOW()
) ELSE (
WHERE posicion = 'cc21' 
AND fijo = 1)
ELSE ( WHERE posicion = 'cc21' 
AND hits < limite ) 
AND contenido = 'notas' 
LIMIT 1 

このサイトでJOINと他の例を試しましたが、この特定のケースの正しい方向を示しているようには見えません。どんな助けも大歓迎です:)

これはうまくいきません

    SELECT 
      TOP (1) * 
    FROM
      ventas 
    WHERE posicion = 'cc21' 
      AND (inic < NOW() AND fin > NOW()) 
      OR (fijo = 1) 
      OR (hits < limite) 
      AND contenido = 'notas' 
    LIMIT 1 
4

3 に答える 3

1

あなたは直接それを行うことができますOR

SELECT  * 
FROM    ventas 
WHERE   
        (
            (posicion = 'cc21' AND inic < NOW() AND fin > NOW())
            OR
            (posicion = 'cc21' AND fijo = 1)
            OR
            (posicion = 'cc21' AND hits < limite ) 
        )
        AND 
        contenido = 'notas' 
LIMIT   1 
于 2013-02-22T05:36:25.637 に答える
0

最後にダイビングして魚を見つけられなかった後、私はこれに頼りました:

$cc21 = mysqli_query($not,"SELECT * FROM ventas WHERE posicion = 'cc21'
AND inic < NOW() AND fin > NOW() and contenido = 'notas' LIMIT 1");
if (mysqli_num_rows($cc21) == 0) {
$cc21 = mysqli_query($not,"SELECT * FROM ventas WHERE posicion = 'cc21'
AND fijo = '1' and contenido = 'notas' LIMIT 1");
if (mysqli_num_rows($cc21) == 0) {
$cc21 = mysqli_query($not,"SELECT * FROM ventas WHERE posicion = 'cc21' AND hits < limite AND  contenido = 'notas' LIMIT 1");
}
}

それはきれいでもコンパクトでもありませんが、それは仕事を成し遂げます;)

あなたのかけがえのない助けのためにあなた全員を戦車に乗せてください

于 2013-02-22T07:56:07.050 に答える
0

最初の行を取得するには、TOP 句を使用する必要があります。

あなたの質問の残りの部分については、私が理解するのが本当に混乱しています. ただし、これを機能させるには AND および OR 演算子を使用する必要があります。括弧 (ブラケット) を使用してそれらをグループ化できます。

トップを選択 (1) * ベントスから WHERE posicion = 'cc21' AND ( (A AND B) OR (C) OR (D))

お役に立てれば。

于 2013-02-22T05:42:36.017 に答える