У меня есть две таблицы MySQL:Как вы определяете, какой матч выбран при запуске `SELECT INNER JOIN WHERE t1.column = t2.column` и есть несколько совпадений?
Продукты
title id hidden categories
Thing 10 N 12,14,
Stuff 23 N 12,
Object 41 Y 13,14
Изображение
filename id productid
aca8t.jpg 1 10
ev7ha.jpg 2 10
mscpk.jpg 3 10
asges.jpg 4 23
fcuhg.jpg 5 23
scvfe.jpg 6 41
vf6kl.jpg 7 41
fgszy.jpg 8 41
я создать список названий продуктов и изображений с использованием ЗЕЬЕСТА, как это:
SELECT t1.title,
t1.id,
t1.hidden,
t1.categories,
t2.image
FROM products AS t1
INNER JOIN pimage AS t2
WHERE t1.categories LIKE '%$categoryId%'
AND t1.id=t2.productid
AND NOT t1.hidden='Y'
GROUP BY id
ORDER BY id ASC
После выполнения этого запроса у меня есть список не скрытых продуктов в данной категории, а также их идентификаторы и одно изображение. Однако выбор изображения кажется случайным. Иногда это в алфавитном порядке, иногда это самый низкий идентификатор, и иногда это не так. Тем не менее, это всегда одно и то же, когда имена файлов для данного продукта остаются неизменными.
Это используется на небольшом веб-сайте, где менеджеры продуктов загружают фотографии продукта и его аксессуаров. Первая фотография должна использоваться как миниатюра и видна на странице категории. Однако в качестве миниатюры иногда выбирается фотография случайного аксессуара, и менеджеры продуктов должны повторно загружать изображения до тех пор, пока не будет выбран правильный. Этот процесс обременителен.
Как я могу изменить инструкцию SQL так, чтобы была выбрана первая фотография (имя файла с наименьшим images.id
)?
Вы используете 'GROUP BY' некстати, потому что у вас есть столбцы в' SELECT', которые не в 'GROUP BY'.Следовательно, как документы MySQL * четко *, вы получаете значение из неопределенной строки соответствия (https://dev.mysql.com/doc/refman/5.6/en/group-by-handling.html). –
ваш оператор INNER JOIN не является полным, поскольку вам нужно даже подумать, что он синтаксически действителен. Вы должны использовать ON clouse для объединения столбцов, как описано здесь: http://www.mysqltutorial.org/mysql-inner-join.aspx. Если вы используете USER, вам действительно не нужен INNER JOIN вообще – rgasiore