2015-11-12 3 views
2

Когда я выбрать что-то из базы данных, как это он дал мне неправильный результат:Неправильный результат от выбора

SELECT * 
FROM Werkwoord_spelling 
WHERE tijd = 'tt' 
AND soort = 'sw' 
AND vorm = 'i' 
OR vorm = 'j' 
ORDER BY RAND() 
LIMIT 20 

Вот несколько строк из результата:

527 Afgelopen zomer leefde jij al twaalf jaar. vt zw j leven leefde 
1346 Stop je nog met kletsen? tt zw j stoppen Stop 

Вы можете увидеть, что у меня есть «В.Т.» в строке 527, но я прошу только для строк с «ТТ» как в строке 1346.

Как я могу решить тыс является?

Sietsko

+0

Не могли бы вы отметить любой из нижеприведенных ответов, как принято, чтобы прикрыть закрытие вашего вопроса? Спасибо. – zedfoxus

ответ

1

необходимо добавить круглые скобки для вашей логической группы. я думаю, что вопрос этот

SELECT * 
FROM Werkwoord_spelling 
WHERE tijd = 'tt' 
AND soort = 'sw' 
AND (vorm = 'i'OR vorm = 'j') 
ORDER BY RAND() 
LIMIT 20 
+1

Только то, что мне нужно. Отлично работает, спасибо :) –

+0

ОК, проверьте один из этих ответов, как ответ на ваш вопрос –

1

Это потому, что у вас есть в вашем где в or. Изменить на:

SELECT * FROM Werkwoord_spelling WHERE tijd = 'tt' AND soort = 'sw' AND (vorm = 'i' OR vorm= 'j' ORDER BY RAND() LIMIT 20) 

и она отлично работает.

1

Обратите внимание, что и имеет приоритет над ИЛИ, так что ваши WHERE условие эквиваленты:

WHERE (tijd = 'tt' AND soort = 'sw' AND vorm = 'i') OR vorm = 'j' 

Я предполагаю, что это должно быть:

WHERE tijd = 'tt' AND soort = 'sw' AND (vorm = 'i' OR vorm = 'j') 

Так используйте скобки.

1

Переписать запрос с использованием парой скобки, как так:

SELECT * FROM Werkwoord_spelling 
WHERE tijd = 'tt' AND soort = 'sw' AND vorm in ('i', 'j') 
ORDER BY RAND() LIMIT 20 

Таким образом, вы сообщаете базу данных, чтобы дать вам запись, если все условия соблюдены:

  • Tijd является ттами
  • soort является SW
  • Vorm либо я или J

В вашем запросе возникла проблема OR. База данных была извлечения записей, которые соответствовали всем условиям ниже

  • Tijd является тт
  • soort является SW
  • Vorm либо я или J
  • , если все выше 3 не может быть согласован , это нормально. Дайте мне отчет, если у него есть vorm = 'j'