Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Sql - как "объединить" таблицы?

239
10 октября 2005 года
Dolonet
1.7K / / 20.05.2000
Столкнулся с проблемой - есть три таблицы: fields, rows & content. Таблица content содержит поля с уникальными ключами от fields и rows. На выходе SQL-запроса мне необходимо иметь таблицу с полями из записей таблицы fields и наполнением из таблицы content с учетом дробления по записям по таблице rows.

Я точно знаю, что это можно сделать в MySQL, т.к. когда-то уже такое делал. Подскажите, пожалуйста, какой командой надо воспользоваться?

Заранее спасибо!
513
10 октября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by Dolonet
Столкнулся с проблемой - есть три таблицы: fields, rows & content. Таблица content содержит поля с уникальными ключами от fields и rows. На выходе SQL-запроса мне необходимо иметь таблицу с полями из записей таблицы fields и наполнением из таблицы content с учетом дробления по записям по таблице rows.

Я точно знаю, что это можно сделать в MySQL, т.к. когда-то уже такое делал. Подскажите, пожалуйста, какой командой надо воспользоваться?

Заранее спасибо!


Тоесть должно получиться что-то вроде этого?

 
Код:
field_id_1|field_id_2|field_id_3
--------------------------------
row_id_n  |NULL      |row_id_x
NULL      |NULL      |row_id_y
239
10 октября 2005 года
Dolonet
1.7K / / 20.05.2000
Цитата:
Originally posted by Yurec
Тоесть должно получиться что-то вроде этого?

 
Код:
field_id_1|field_id_2|field_id_3
--------------------------------
row_id_n  |NULL      |row_id_x
NULL      |NULL      |row_id_y



Не очень понял эту схему. Примерно так. Есть таблицы:

Код:
=========
fields
---------
field_id
field_name
=========

=========
rows
---------
row_id
=========

=========
content
---------
field_id
row_id
content
=========

А нужно:
 
Код:
|field_name(1)|field_name(2)|...
------+-------------+-------------+-----
row(1)|content(1,1) |content(2,1) |...
row(2)|content(2,1) |content(2,2) |...
....  |...          |...          |...
row(n)|content(n,1) |content(n,2) |...
------+-------------+-------------+-----
513
10 октября 2005 года
Yurec
228 / / 21.09.2005
Конкретно в таком виде-далеко не тривиально и одним запросом наверно не получится...
А если просто сделать
 
Код:
SELECT f.f_name, c.c_r_id, c.content
FROM content AS c, fields AS f
WHERE f.f_id = c.c_f_id


То мы фактически получаем то что нам надо... Просто не в таком представлении, но сами данные использовать можно фактически также.
239
10 октября 2005 года
Dolonet
1.7K / / 20.05.2000
Да, такой вариант тоже есть. Но мне необходима именно такая реализация, какую я нарисовал в схеме. Я забыл какой командой это делается. Что-то вроде JOIN, JUNC, MERGE, BLENDING или рядом с ними. В ней описывается роль каждой таблицы и их связки. Это не очень популярная команда, поскольку далеко не везде ее необходимо использовать.
513
10 октября 2005 года
Yurec
228 / / 21.09.2005
Цитата:
Originally posted by Dolonet
Да, такой вариант тоже есть. Но мне необходима именно такая реализация, какую я нарисовал в схеме. Я забыл какой командой это делается. Что-то вроде JOIN, JUNC, MERGE, BLENDING или рядом с ними. В ней описывается роль каждой таблицы и их связки. Это не очень популярная команда, поскольку далеко не везде ее необходимо использовать.




Из этого вроде есть только JOIN (хотя я и ей ни разу не пользовался). Но у JOIN немного другой смысл, она декартово обеежиняет таблицы, типа

 
Код:
SELECT f_name, content
FROM content
JOIN fileds ON f_id = c_f_id
LIMIT 0 , 30


Но если ты вспомнишь как это реализовать, сообщи, очень интересно.
PS Все мои коллеги сказали что скорее всего это невозможно :{
239
10 октября 2005 года
Dolonet
1.7K / / 20.05.2000
Странно. Но LEFT JOIN я использую в 3 из 4 запросов. Немного удивлен, что Вы - нет.

Мне тоже когда-то говорили, что это невозможно. Но это не так. Я лично это делал. Такая операция, естественно, очень медленная, но зато невероятно эффективная. Что она есть, я знаю абсолютно точно.

Постараюсь еще в других местах поискать. Спасибо за интерес :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог