У меня есть две таблицы. У одного есть некоторые детали продукта, у другого есть различные фотографии для продукта.
Для моей задачи используются только следующие поля:
tableA
id - prodName
tableB
id - prod_id - photoName
где tableA.id = tableB.prod_id
Не во всех продуктах есть фотографии (другими словами, не каждый tableA.id существует в tableB).
Меня интересует только первое фото каждого товара (на котором есть фотографии).
Какой запрос позволил бы мне перечислить все товары на моей странице, показывая сначала те, у которых есть фотографии, а в конце те, у которых нет фотографий? Оба набора должны быть в алфавитном порядке в зависимости от названия продукта.
Пока я проверил следующее без 100% успеха
Using two queries:
Query 1st: SELECT prod_id FROM tableB WHERE photoName <> '' GROUP BY prod_id ORDER BY photo_name
this will give me (with some php scripting) a list (comma seperated) of all products with photos, sorted by photo name
Query 2: SELECT ..... FROM tableA WHERE ..... ORDER BY FIND_IN_SET(id, '$myList') DESC, prodName ASC
Второй запрос отфильтрует товары, которые имеют / не имеют фотографий, но не отсортированы по названию продукта (поскольку исходный список упорядочен по имени фотографии).
Есть ли способ выполнить то, что я хочу, в одном запросе (если это возможно)?