Не могу найти ошибку в логике запроса SQL

D
На сайте с 28.06.2008
Offline
997
210

Есть запрос вида

SELECT t1.* FROM firm_price AS t1
INNER JOIN firm_address AS t2 ON t2.item_id = t1.item_id
INNER JOIN firm_districts AS t3 ON t2.district = t3.alias
WHERE t3.id = 317 and t1.year = 2018 ORDER BY t1.year, t1.value DESC

Это запросы выдает очень странный для меня результат - в него входят 5 значений НЕ ИЗ t3.id = 317 (помечены красным) причем одно из них дублируется.

Уже минут 40 пытаюсь понять где ошибка, пока не могу. Может вы увидите?

png 186321.png
IL
На сайте с 20.04.2007
Offline
418
#1
Dram:
НЕ ИЗ t3.id = 317

там t1.id

Dram:
SELECT t1.* FROM firm_price AS t1

---- 10 t.id

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
D
На сайте с 28.06.2008
Offline
997
#2

P.S. ошибку так и не нашел, но проблему решил добавив через INNER JOIN еще одну таблицу и еще раз жестко указав нужный дистрикт уже через нее.

---------- Добавлено 08.09.2019 в 09:33 ----------

ivan-lev, а что условия WHERE могут быть только из таблицы по который первой идет селект?

IL
На сайте с 20.04.2007
Offline
418
#3
Dram:
ivan-lev, а что условия WHERE могут быть только из таблицы по который первой идет селект?

Я разве это сказал?

1) выбираются поля из t1.*

2) если есть "лишние" строки - проверить логику JOIN-ов

3) начните с

SELECT  t3.id, t1.* FROM firm_price AS t1 

Будет ли в первой колонке "не 317"?

D
На сайте с 28.06.2008
Offline
997
#4
ivan-lev:
Будет ли в первой колонке "не 317"?

Нет - в первой колонке только 317.

Далее я беру итем-айди 91815 и иду в таблицу адресов - firm_address AS t2, нахожу два адреса фирмы (теперь понимаю почему двоение было).

Смотрю поле дистрикт у адресов - оно равно = 'sovetskiy'

Иду в таблицу firm_districts AS t3 ON t2.district = t3.alias и делаю поиск по sovetskiy, мне выдает много городов где есть район "Советский", но среди них только один нужный мне WHERE t3.id = 317 ?

Итем айди 91815 - из другого города

IL
На сайте с 20.04.2007
Offline
418
#5
Dram:
Итем айди 91815 - из другого города

А где в первом посте таблица (или условие?) с городами? Видимо, она и была добавлена?

D
На сайте с 28.06.2008
Offline
997
#6

ivan-lev, да, вы правы, ее добавил и все заработало.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий