Итак, следуя подсказкам, которые мне дали некоторые из сообщества 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, и ожидаемый результат что-то вроде
Большинству людей здесь нужны образцы данных таблицы и ожидаемый результат в виде форматированного текста, а не в виде изображений.
@jarlh Эй, спасибо! Это следующий шаг в моем онлайн-курсе по PHP и SQL.
Я бы поставил этот шаг как предыдущий!
Пожалуйста, укажите СУБД, которую вы используете, т. е. Oracle, MSSQL и т. д., а также опубликуйте ожидаемый результат.
И, пожалуйста, не размещайте фотографии текста
Но, учитывая, что вы упоминаете php, обратите внимание, что такие вещи, вероятно, лучше всего решаются в коде приложения.
Вам нужно решить, как вы хотите видеть 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
Знаешь что? Это очень хорошая идея!
И именно то, что я искал, большое спасибо, мой друг :D
Рад помочь...
Совет сегодняшнего дня: переключитесь на современный, явный синтаксис
JOIN
. Легче писать (без ошибок), легче читать и поддерживать, а также проще преобразовать во внешнее соединение, если это необходимо!