Member 13731138 Ответов: 1

Почему я получаю предупреждение: усеченное неправильное двойное значение: '%asian%'


Я пытаюсь выполнить этот запрос:

Выберите R.restaurant_name из ресторана как R, этнос как е, аллерген как где электронную.restaurant_id=а.restaurant_id и электронной.restaurant_id=Р.restaurant_id и.restaurant_id=Р.restaurant_id как.как аллерген='%рыба%' е.этнос='%азиатских%';

Если это поможет это схема всех таблиц в этом запросе:

Опишите этническую принадлежность;
+---------------+--------------+------+-----+---------+-------+
| Поле | Тип | Нуль | Ключ | По Умолчанию | Дополнительные |
+---------------+--------------+------+-----+---------+-------+
| restaurant_id | int(11) | NO | MUL | NULL | |
| этническая принадлежность | varchar(255) | NO | | NULL | |
+---------------+--------------+------+-----+---------+-------+

Охарактеризуйте ресторан;
+-----------------+--------------+------+-----+---------+----------------+
| Поле | Тип | Нуль | Ключ | По Умолчанию | Дополнительные |
+-----------------+--------------+------+-----+---------+----------------+
| restaurant_id | int(11) | NO | PRI | NULL | auto_increment |
| restaurant_name | varchar(255) | YES | | NULL | |
| phone_number | varchar(255) | YES | | NULL | |
| address_1 | varchar(255) | YES | | NULL | |
| address_2 | varchar(255) | YES | | NULL | |
| city | varchar(255) | YES | | NULL | |
| state | varchar(2) | YES | | NULL | |
| zip | int(11) | YES | | NULL | |
| filename | varchar(255) | YES | | NULL | |
| image | longblob | YES | | NULL | |
+-----------------+--------------+------+-----+---------+----------------+

Опишите аллерген;
+---------------+--------------+------+-----+---------+----------------+
| Поле | Тип | Нуль | Ключ | По Умолчанию | Дополнительные |
+---------------+--------------+------+-----+---------+----------------+
| аллерген | varchar(255) | YES | | NULL | |
| restaurant_id | int(11) | YES | MUL | NULL | |
| menu_item_id | int(11) | YES | MUL | NULL | |
| allergen_id | int(11) | NO | PRI | NULL | auto_increment |
+---------------+--------------+------+-----+---------+----------------+

Что я уже пробовал:

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

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

Был бы признателен за помощь опытного или знающего человека в MYSQL :)

Richard MacCutchan

Каков тип и значение переменной %asian%?

1 Ответов

Рейтинг:
2

CHill60

У вас случайно "LIKE"в ваш запрос

D a.restaurant_id=r.restaurant_id LIKE a.allergen='%fish%' 

Попробуйте изменить их на AND

Это также очень старомодный способ соединения столов. Видеть Визуальное представление SQL-соединений[^] и Объединение таблиц в SQL[^]
Напр.
SELECT r.restaurant_name FROM #restaurant as r
LEFT JOIN #ethnicity as e ON e.restaurant_id=r.restaurant_id
LEFT JOIN #allergen as a ON a.restaurant_id=r.restaurant_id AND e.restaurant_id=a.restaurant_id
WHERE a.allergen='%fish%' and e.ethnicity='%asian%';