SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 11.11.2010 10:48:48

degressor
Участник
Зарегистрирован: 11.11.2010
Сообщений: 2

Как получить за раз данные из 4х таблиц?

Есть таблица рецепты в которой описание, картинка итд, и есть 3 таблицы: шаги приготовления, ингридиенты, коментарии. Вопрос, можно ли это получить 1 запросом?
На выходе мне нужно так для каждого рецепта: данные самого рецепта(описание итд), потом 3 массива: все шаги, все ингредиенты, все коментарии.

Или такое не возможно(не эффективно) и нужно делать 4 запроса?

Отредактированно degressor (11.11.2010 10:49:45)

Неактивен

 

#2 11.11.2010 16:54:46

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Как получить за раз данные из 4х таблиц?

Можно и одним запросом:
SELECT r.*, i.*
FROM recipes r, ingredients i
WHERE r.id = i.recipe_id AND r.name = 'запеканка'.

Но, кажется, схема хранения не очень удачная — Вам никогда не понадобятся
ингридиенты сами по себе (или шаги приготовления) — только в составе рецепта.
Обычно тогда делают одно поле типа TEXT, и в нем сохраняют всю необходимую
информацию (а если хочется детализации — то в XML).

P.S. Комментарии, разумеется, добавляются людьми динамически, поэтому их
имеет смысл хранить отдельно smile

Неактивен

 

#3 12.11.2010 10:59:18

degressor
Участник
Зарегистрирован: 11.11.2010
Сообщений: 2

Re: Как получить за раз данные из 4х таблиц?

Спасибо за ответ. Сохранили ингредиенты отдельно ,так как по ним искать собираемся, ну скажем задаю я сколько чего у меня есть а мне рецепт находится под это.
Делал с join всех 4х таблиц и в конце писал goup by, пролбема в том, что я получаю в ответе все варианты склейки этих таблиц.

Неактивен

 

#4 12.11.2010 15:16:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Как получить за раз данные из 4х таблиц?

Пример запроса приведите?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson