У меня есть большой фильтр со многими параметрами и вы хотите сгенерировать запрос для sql automaticle и без большого количества кода.SQL duplicate row
GET:
searchvalue=abc
&title=abc
&description=abc
&category=1
&subcategory=2
&zip=7
&city=ke
&country=DE
SQL:
SELECT activity.* FROM activity,subcategory,city,country
WHERE activity.title LIKE '%abc%' OR activity.description LIKE '%abc%'
AND subcategory.SubID = 2
AND city.zip LIKE '%7%'
AND city.City LIKE '%ke%'
AND country.CShort= 'DE'
С помощью этой опции, у меня есть 1 строку в моей базе данных. Ответ этот ряд много раз, много много раз.
Я знаю, что sql дублирует строку, когда таблица не используется в клаузе WHERE - но почему он делает это сейчас и как я могу это решить?
Edit: У меня есть ER, но база данных находится в немецком (школьный проект), может быть, это поможет вам понять:
Спасибо!
Вы делаете 'JOIN' на трех различных таблиц без каких-либо' JOIN' условий. Это дает вам декартовое произведение из трех таблиц, которое будет учитывать огромное количество строк. Проверьте [этот ресурс] (http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/). – Kryten
Я ДОЛЖЕН использовать ОБЪЕДИНЕНИЕ? – user1878413
@ user1878413, либо используйте 'JOIN', либо привяжите таблицы в предложении' WHERE'; но вы * ДОЛЖНЫ * что-то делать. –