SQL, как я могу пропустить повторяющиеся значения в столбце

Итак, следуя подсказкам, которые мне дали некоторые из сообщества stackoverflow, я создал эту «базу данных», чтобы хранить свои блюда и их ингредиенты. Моя единственная проблема заключается в том, что я не хотел бы, чтобы имя и идентификатор повторялись без необходимости, и я хотел бы знать, есть ли способ избежать этого. Вот скриншот и код ниже. Спасибо

CREATE TABLE platos ( 
    id int auto_increment not null primary key, 
    name varchar(255) not null
)ENGINE=InnoDb;

CREATE TABLE ingredientes_para_platos (
    id  int auto_increment primary key,
    plato_id int not null,
    ingredientes varchar(255) not null,
    CONSTRAINT fk_ingredientes_para_platos FOREIGN KEY(plato_id) REFERENCES platos(id)
)ENGINE=InnoDb;

SELECT p.id,p.name,i.ingredientes
    FROM platos p, ingredientes_para_platos i
        WHERE p.id = i.plato_id; 

Запрошены дополнительные данные: я использую MySQL, и ожидаемый результат что-то вроде

ИДЕНТИФИКАТОР Имя Ингредиенты 1 Рис с курицей Рис Курица 2 Рис с яйцами и бананами Рис яйца Бананы

Совет сегодняшнего дня: переключитесь на современный, явный синтаксис JOIN. Легче писать (без ошибок), легче читать и поддерживать, а также проще преобразовать во внешнее соединение, если это необходимо!

jarlh 14.12.2020 14:36

Большинству людей здесь нужны образцы данных таблицы и ожидаемый результат в виде форматированного текста, а не в виде изображений.

jarlh 14.12.2020 14:37

@jarlh Эй, спасибо! Это следующий шаг в моем онлайн-курсе по PHP и SQL.

Rikku ESP 14.12.2020 14:38

Я бы поставил этот шаг как предыдущий!

jarlh 14.12.2020 14:39

Пожалуйста, укажите СУБД, которую вы используете, т. е. Oracle, MSSQL и т. д., а также опубликуйте ожидаемый результат.

Arun Palanisamy 14.12.2020 14:42

И, пожалуйста, не размещайте фотографии текста

Strawberry 14.12.2020 14:58

Но, учитывая, что вы упоминаете php, обратите внимание, что такие вещи, вероятно, лучше всего решаются в коде приложения.

Strawberry 14.12.2020 15:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
7
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно решить, как вы хотите видеть ingredients в своем результате. Один из способов — использовать group by с p.id или p.name и использовать group_concat для объединения ингредиентов в один столбец. См. https://www.mysqltutorial.org/mysql-group_concat/

SELECT p.id,p.name, GROUP_CONCAT(i.ingredientes)
    FROM platos p, ingredientes_para_platos i
        WHERE p.id = i.plato_id GROUP BY p.id;

Тогда вы увидите:

2 | Rice with bananas and eggs | Rice, Bananas, Eggs
1 | Rice with chicken          | Rice, Chicken

Знаешь что? Это очень хорошая идея!

Rikku ESP 14.12.2020 14:51

И именно то, что я искал, большое спасибо, мой друг :D

Rikku ESP 14.12.2020 14:52

Рад помочь...

endo64 15.12.2020 09:06

Другие вопросы по теме