Вопрос SQL-запроса - PullRequest
       15

Вопрос SQL-запроса

0 голосов
/ 30 ноября 2010

Нет конкретных СУБД, как бы я сделал следующее:

# There are many tables per one restaurant, many napkins per one table
# Pseudo SQL

SELECT RESTAURANT WHERE ID = X;
SELECT ALL TABLES WHERE RESTAURANT_ID = RESTAURANT.ID;
SELECT ALL NAPKINS WHERE TABLE_ID = TABLE.ID;

Но все в одном запросе? Я использовал JOIN, чтобы получить все таблицы в одном запросе с рестораном, но возможно ли получить все салфетки для каждой таблицы в одном запросе?

Ответы [ 3 ]

3 голосов
/ 30 ноября 2010
select * -- replace * with the columns you need...
from restaurant as r 
    inner join tables as t on t.restaurant_id = r.id
    inner join napkins as n on n.table_id = t.id
where r.id = [restaurant id]
0 голосов
/ 30 ноября 2010

Кажется, вы хотите вернуть три отдельных результата, а не один результат с повторяющимися значениями для RESTAURANT_N или TABLE_N.

В SQL это делается с помощью хранимых процедур, которые могут возвращать несколько наборов результатов. Синтаксис хранимых процедур варьируется в зависимости от продуктов базы данных, поэтому вам следует задать вопрос для конкретных продуктов. В хранимой процедуре будет три оператора выбора для РЕСТОРАНОВ, ТАБЛИЦ и НАПКИНОВ. Результаты трех операторов возвращаются в виде пакета в приложение, которое затем может использовать результаты.

0 голосов
/ 30 ноября 2010

Вы определенно будете повторять таблицы и информацию о ресторанах в строках, например:

Ресторан1 Стол1 Салфетка1
Ресторан1 Стол1 Салфетка2
Ресторан1 Стол1 Салфетка3
Ресторан1 Стол2 Салфетка4
Ресторан2 Стол1 Салфетка5

...