2010-06-11 3 views
0

Хорошо, это сводит меня с ума, мне нужно написать SQL-запрос, который будет захватывать информацию о продукте из 2 таблиц. Первая таблица «продукты» содержит productId, productname, quantityperunit и unitprice. Теперь я могу искать по PRODUCTNAME и CategoryName индивидуально, но когда я пытаюсь совместить 2 я получаю сумасшедшие результаты, вот запрос:2 таблица SQL Query weird results

"SELECT DISTINCT productId, productname, quantityperunit, unitprice FROM products pr, 
categories ca WHERE pr.categoryID = ca.categoryID AND ProductName LIKE '%" + searchTerm + "%' 
OR CategoryName LIKE '%" + searchTerm + "%' 

отговорка стиль Java там, то здесь он отформатирован лучше:

SELECT DISTINCT productId, productname, quantityperunit, unitprice FROM products pr, 
categories ca WHERE pr.categoryID = ca.categoryID AND ProductName LIKE '%Tofu%' 
OR CategoryName LIKE '%Tofu%' 

любая помощь будет оценена.

+3

«Сумасшедшие результаты» не говорят нам многого. Какой результат вы ожидали, что вы получили вместо этого, и почему вы думаете, что это «сумасшедший»? –

+0

Извините, это просто показалось случайным, иногда это просто печатает все или дублирует продукты с категориями, которые даже не соответствуют их фактическим категориям в db. – javArc

+0

Почему бы вам не использовать JOIN? –

ответ

3

Я не могу сказать точно, что вы имеете в виду под «сумасшедшей reslust», но я предполагаю, что у вас есть гораздо больше строк, чем вы ожидали. Добавить круглые скобки:

WHERE pr.categoryID = ca.categoryID AND (ProductName LIKE '%Tofu%' 
OR CategoryName LIKE '%Tofu%') 
+0

Да, это прибило его, благодаря мужчине – javArc

1

Ваши LIKE s в ваших двух образцовых запросах различны.

LIKE '%Tofu%' очень отличается от LIKE 'Tofu'.

В % действует как групповой символ, так LIKE '%Tofu%' матчи Big chunk o' Tofu and stuff но LIKE 'Tofu' не будет соответствовать - это будет соответствовать только Tofu.

Что вы имели в виду?

(также, я согласен с парнем, который упомянул вы должны проверить скобки)

+0

Извините, человек, только что обновил его, подстановочный знак для обоих тофу – javArc