Выбор строк из таблицы по одному полю из другой таблицы

#php #mysql #sql

#php #mysql #sql

Вопрос:

Чего я хочу, так это отображать строки из таблицы, которая выбрана полем из другого таблицы с единственным значением, скажем, отображать изображения из таблицы по последнему идентификатору категории.

У меня есть запрос такого типа, но он возвращает мне все совпадающие строки ключей, если я устанавливаю ОГРАНИЧЕНИЕ 1, то возвращается одна строка…

 SELECT i.prof_image FROM profile_images i
JOIN images_cat cat ON (cat.cat_id = i.cat_id)
GROUP BY i.prof_image; 
//OR LIMIT 1;
  

Есть идеи по устранению этой проблемы. (т. Е. Отображение последних изображений категорий)?

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

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

2. я не уверен, что понимаю вашу проблему, но я предполагаю, что вам не хватает «DISTINCT» в вашем запросе. ВЫБЕРИТЕ DISTINCT i.prof_image ….

3. @Rufinus,@james C: Нет, я просто хочу отобразить изображения категории. по последней добавленной категории.

Ответ №1:

Это сработает для вашего конкретного примера.. Если вам нужно быть более избирательным, то, пожалуйста, опубликуйте некоторые дополнительные детали..

 SELECT i.prof_image 
FROM profile_images i 
WHERE cat_id = (select max(cat_id) from images_cat)
  

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

1. зачем выделять это? MAX (i.cat_id) должен делать точно то же самое.

2. @StevieG, да, это возможно, но я не хочу, чтобы один запрос подразумевал объединение.

3. @StevieG выдает мне ошибку… Код ошибки: 1111 Недопустимое использование групповой функции (занято 0 мс)

4. Я вернул его к исходному решению, не похоже, что вы можете сделать это без дополнительного выбора (хотя я буду продолжать пытаться!)..

5. Этот отображает только заголовок поля, но в нем нет данных. И я проверяю оба по отдельности, чтобы они работали..

Ответ №2:

 SELECT * FROM table_1
LEFT JOIN table_2 ON table_1.id = table_2.id
  

Этот запрос захватит все данные в table_2, которые имеют одинаковое значение id.

Обратите внимание, что это ЛЕВОЕ СОЕДИНЕНИЕ — это означает, что если в table_2 нет совпадающих значений, оно все равно вернет значения из table_1.

Каковы ваши намерения при использовании last()?

Надеюсь, это поможет.

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

1. НЕТ, это не так просто, как вы пишете,

2. @ime Извините, это не помогло, не нужно кричать: P. Вы нашли свой ответ?

3. да, ответ Стиви — помогите мне, но пока не для принятия в качестве одного запроса. имеется в виду получение записи с помощью ОБЪЕДИНЕНИЙ>…. И спасибо за твой ответ, чувак.