Получите результат для отсутствующих данных LEFT JOIN - PullRequest
0 голосов
/ 15 февраля 2019

как сопоставить и product_id в запросе atm, запрос извлекает только отсутствующий результат, но каждый продукт имеет свою собственную запись и должен соответствовать этой записи

этот запрос работает правильно, но не совпадает с product_id

$query = $this->db->query("SELECT oc_ekstri_frontend.*,
                              oc_ekstri_image.id as img_id,
                              oc_ekstri_image.name
                              FROM oc_ekstri_image
LEFT JOIN oc_ekstri_frontend ON (oc_ekstri_frontend.id = oc_ekstri_image.frontend_id)
LEFT JOIN oc_ekstri_frontend_view ON (oc_ekstri_frontend_view.ekstri_id = oc_ekstri_image.id)
                              WHERE oc_ekstri_frontend.subcat_id = '" . $id . "'
                             AND oc_ekstri_frontend_view.ekstri_id IS NULL");

как мне будет соответствовать текущий product_id?я пытался что-то вроде этого, чтобы добавить к запросу, но не результат работы пусто

AND oc_ekstri_frontend_view.product_id = '" . $product_id . "'

1 Ответ

0 голосов
/ 15 февраля 2019

Не видя ваших данных или ожидаемого результата, трудно дать точный ответ.Одним из возможных решений может быть перенос вашего нового ограничения из предложения WHERE в предложение ON:

SELECT
    f.*,
    i.id AS img_id,
    i.name
FROM oc_ekstri_image i
LEFT JOIN oc_ekstri_frontend f
    ON f.id = i.frontend_id
LEFT JOIN oc_ekstri_frontend_view v
    ON v.ekstri_id = i.id AND
       v.product_id = ?
WHERE
    f.subcat_id = ? AND
    v.ekstri_id IS NULL;

Я использую ? заполнители в приведенном выше запросе, чтобы предложить использовать подготовленный операторвместо того, чтобы объединить в ваших параметрах.Если вы не знаете, какие подготовленные операторы есть в PHP, вам следует прочитать о них .

...