Почему не срабатывает INNER JOIN?

Добрый день.
Есть две таблицы - А и В. Я пытаюсь вывести все записи из таблиц А и В, у которых выполнится условие A.id = B.id и A.id_order равен определенному значению. Написал для этого такой запрос:
SELECT A.id, B.price 
                  FROM `table_A` as A
                  INNER JOIN `table_B` as B ON A.id = B.id
                  WHERE A.id_order = 100

По логике все должно работать, но почему-то не работает, и я не могу понять, почему. Не выводится ни одна строка. Убрать WHERE - строк будет слишком много. Поскольку INNER JOIN требует нахождения обеих полей из ON в таблицах, перенести условие из WHERE в ON нельзя. Значение в условии WHERE верное.
В каком месте я мог допустить ошибку?

Буду благодарен за ответы, спасибо.
  • Вопрос задан
  • 865 просмотров
Решения вопроса 2
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
значит в таблице В нет ни одного id, совпадающего с id в таблице A, для которых A.id_order=100

для проверки сделайте
SELECT DISTINCT(id) FROM table_A WHERE id_order=100

и сравните его с выводом SELECT DISTINCT(id) FROM table_В
ну или в 1 запросе
SELECT * FROM table_В WHERE id IN (SELECT DISTINCT(id) FROM table_A WHERE id_order=100)
- тут должно вернуть пустой список.

как вариант - замените INNER JOIN на LEFT JOIN - увидите кучу А.id без цены
Ответ написан
Комментировать
напишите так
SELECT A.id, B.price 
                  FROM `table_A` as A
                  LEFT JOIN `table_B` as B ON A.id = B.id
                  WHERE A.id_order = 100

у увидите что в table_B нет строки соотвтетсвующей A.id при A.id_order = 100
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Дык таблиц `op` и `pr` в запросе то нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы