PHP и MYSQL отображают 1 запись с несколькими именами

#php #mysql #database #image

#php #mysql #База данных #изображение

Вопрос:

я разрабатываю один модельный веб-сайт, на котором есть разные события. Я сохранил изображение в имени таблицы базы данных image. Теперь мой вопрос в том, как мне отобразить одну запись для одного события из многих записей? Например: пользователь загрузит изображение нескольких событий в одном изображении, но с тем же именем события. Теперь я должен отображать одно изображение для каждого события.

Имя таблицы — это изображения, которые она получила, такие как ImageID, imageName, ImageType, eventName, ImagePath

как мне создать инструкцию sql, в которой печатается другое имя события и изображение

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

1. Сделайте ваш вопрос более информативным, например, укажите структуру вашей таблицы, укажите код, с которым вы пробовали и т.д.

2. Как насчет случайного выбора изображения каждый раз, когда пользователь посещает страницу для определенного события?

3. Привет, Азиз, спасибо за ответ, но я хочу показать 1 изображение каждого события.

4. Однако какое изображение? например, каковы критерии для выбора изображения?

5. Я хочу создать страницу с именем event и хочу получить все события из базы данных, где имя поля — eventName. Но в БД есть несколько записей для одного и того же события. Итак, как мне получить одно имя события из многих?

Ответ №1:

Ваш вопрос не ясен. Надеюсь, этот запрос может помочь.

  select * from images 
 where eventName='name'
 group by eventName
  

Ответ №2:

Расширяя ответ @learner:

Этот код:

 SELECT * FROM images  
WHERE eventName = 'name' 
GROUP BY eventName 
  

Выбирает случайную строку из всех возможных строк, которые применяются.
Если вы хотите получить некоторый контроль над тем, какое изображение будет выбрано, вам нужно использовать HAVING предложение (или аналогичную конструкцию).

Этот код выберет изображение, которое было добавлено совсем недавно.

 SELECT * FROM images  
WHERE eventName = 'name' 
GROUP BY eventName 
HAVING id = MAX(id)       <<-- assuming id is an auto_incrementing primary key
//HAVING date_added = MAX(date_added)  <<-- use this instead if you have an added_date
  

Если вас интересует только одно изображение для одного события, вы также можете сделать:

 SELECT * FROM images
WHERE eventname = 'name'
ORDER BY id DESC
LIMIT 1 OFFSET 0;