Как исправить условное WHERE и ПРИСОЕДИНИТЬСЯ к запросу таблицы sql?

#php #mysql #datatable #conditional

#php #mysql #datatable #условные операторы

Вопрос:

Я пытаюсь выбрать конкретную информацию из таблицы, которая зависит от условий двух других таблиц. Когда я пытаюсь работать с отдельными условиями, но когда я пытаюсь работать с двумя условиями, это не так.

При этом я получаю правильные данные из таблицы:

 $sql = "SELECT * FROM commerce_order WHERE m_key = 'total'"; 
  

И с этим я также получаю результат из таблицы:

 $sql = "SELECT * 
        FROM  commerce_order M 
        JOIN commerce_order_items I 
          ON M.item_id = I.item_id 
        JOIN produtcs P 
          ON I.order_id = P.ID 
        WHERE status = 'complete'";
  

но когда я пытаюсь это сделать, я не получаю никакого результата:

 $sql = "SELECT * 
        FROM commerce_order M 
        WHERE m_key = 'total' 
        JOIN commerce_order_items I 
          ON M.item_id = I.item_id 
        JOIN produtcs P 
          ON I.order_id = P.ID 
        WHERE status = 'complete'";`
  

Я ожидал, что первый результат кода будет отфильтрован по второму условию кода. Я знаю, какие значения из первой таблицы должны быть возвращены, но я их не получаю.

Комментарии:

1. вы не можете поставить WHERE m_key = 'total' перед JOIN всеми вашими WHERE s должны идти после всех ваших JOIN s

Ответ №1:

Вы не можете поставить WHERE m_key = 'total' перед JOIN всеми вашими WHERE предложениями, должны идти после всех ваших JOIN :

 $sql = "SELECT * 
    FROM commerce_order M  
    JOIN commerce_order_items I 
      ON M.item_id = I.item_id 
    JOIN produtcs P 
      ON I.order_id = P.ID 
    WHERE status = 'complete' AND m_key = 'total'";
  

Комментарии:

1. Проблема в том, что если я это сделаю, я буду рассматривать m_key как статус в таблице produtcs, но m_key находится в первой таблице, из которой я хочу получить значения.