MySQL, запрос LIKE и JOIN и AJAX. Что не так??

fortuner

Хранитель порядка
Регистрация
26 Июн 2012
Сообщения
631
Реакции
1.239
Всем привет! Пишу тут модуль под магазин свой. Задача - фильтровать заказы в админке.
Все работает прекрасно, кроме LEFT JOIN к другой таблице, чтобы делать SELECT по имени пользователя.
Вот код:
PHP:
$sql = 'SELECT
    o.`id_order`
FROM
    `'._DB_PREFIX_.'orders` o
     // Тут начинаются проблемы
    '.($customer ? ' LEFT JOIN `'._DB_PREFIX_.'customer` c ON o.`id_customer` = c.`id_customer`' : '').'
WHERE 1

// Тут работает (код заказа)
'.($reference ? ' AND o.`reference` LIKE "%'.$reference.'%"' : '')
// А тут не работает (имя пользователя)
.($customer ? ' AND c.`lastname` LIKE "%'.$customer.'%"' : '')
// Тут опять все работает (тип доставки)
.($id_carrier ? ' AND o.`id_carrier` LIKE "%'.$id_carrier.'%"' : '');

Синтаксическая ошибка? Где?
Моцк сломал уже.
 
Конечный нерабочий вариант SQL какой? Таблица 'customer` точно есть? Какая ошибка MySQL?
 
Судя по всему, ошибка где-то в PHP. Написал отдельно запрос в phpMyAdmin вот так:
PHP:
SELECT
o.`id_order`
FROM
`ps_orders` o
LEFT JOIN `ps_customer` c ON o.`id_customer` = c.`id_customer`
WHERE 1
AND c.`lastname` LIKE "%Doe%"
И все прекрасно работает.
Ошибок MySQL вроде нет, просто возвращает пустой массив.
 
Ок, все запилил, все работает.
Можно еще один вопрос немного не по теме?
Нужно ли делать условия для LEFT JOIN?
Ну в смысле, если не запрашиваются данные из другой таблицы, убирать ли LEFT JOIN к ней?
Вот так:
PHP:
($customer ? ' LEFT JOIN `'._DB_PREFIX_.'customer` c ON o.`id_customer` = c.`id_customer`' : '')
Или просто так:
PHP:
LEFT JOIN `'._DB_PREFIX_.'customer` c ON o.`id_customer` = c.`id_customer`
 
Ошибка была, кстати совсем тупая.
После WHERE 1 не хватало пробела и один (именно один!) из следующих запросов сливался в WHERE 1AND бла-бла-бла.
 
Назад
Сверху