field_id_1|field_id_2|field_id_3
--------------------------------
row_id_n |NULL |row_id_x
NULL |NULL |row_id_y
Sql - как "объединить" таблицы?
Я точно знаю, что это можно сделать в MySQL, т.к. когда-то уже такое делал. Подскажите, пожалуйста, какой командой надо воспользоваться?
Заранее спасибо!
Цитата:
Originally posted by Dolonet
Столкнулся с проблемой - есть три таблицы: fields, rows & content. Таблица content содержит поля с уникальными ключами от fields и rows. На выходе SQL-запроса мне необходимо иметь таблицу с полями из записей таблицы fields и наполнением из таблицы content с учетом дробления по записям по таблице rows.
Я точно знаю, что это можно сделать в MySQL, т.к. когда-то уже такое делал. Подскажите, пожалуйста, какой командой надо воспользоваться?
Заранее спасибо!
Столкнулся с проблемой - есть три таблицы: fields, rows & content. Таблица content содержит поля с уникальными ключами от fields и rows. На выходе SQL-запроса мне необходимо иметь таблицу с полями из записей таблицы fields и наполнением из таблицы content с учетом дробления по записям по таблице rows.
Я точно знаю, что это можно сделать в MySQL, т.к. когда-то уже такое делал. Подскажите, пожалуйста, какой командой надо воспользоваться?
Заранее спасибо!
Тоесть должно получиться что-то вроде этого?
Код:
Цитата:
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
--------------------------------
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
=========
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) |...
------+-------------+-------------+-----
------+-------------+-------------+-----
row(1)|content(1,1) |content(2,1) |...
row(2)|content(2,1) |content(2,2) |...
.... |... |... |...
row(n)|content(n,1) |content(n,2) |...
------+-------------+-------------+-----
А если просто сделать
Код:
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
FROM content AS c, fields AS f
WHERE f.f_id = c.c_f_id
То мы фактически получаем то что нам надо... Просто не в таком представлении, но сами данные использовать можно фактически также.
Да, такой вариант тоже есть. Но мне необходима именно такая реализация, какую я нарисовал в схеме. Я забыл какой командой это делается. Что-то вроде JOIN, JUNC, MERGE, BLENDING или рядом с ними. В ней описывается роль каждой таблицы и их связки. Это не очень популярная команда, поскольку далеко не везде ее необходимо использовать.
Цитата:
Originally posted by Dolonet
Да, такой вариант тоже есть. Но мне необходима именно такая реализация, какую я нарисовал в схеме. Я забыл какой командой это делается. Что-то вроде JOIN, JUNC, MERGE, BLENDING или рядом с ними. В ней описывается роль каждой таблицы и их связки. Это не очень популярная команда, поскольку далеко не везде ее необходимо использовать.
Да, такой вариант тоже есть. Но мне необходима именно такая реализация, какую я нарисовал в схеме. Я забыл какой командой это делается. Что-то вроде JOIN, JUNC, MERGE, BLENDING или рядом с ними. В ней описывается роль каждой таблицы и их связки. Это не очень популярная команда, поскольку далеко не везде ее необходимо использовать.
Из этого вроде есть только JOIN (хотя я и ей ни разу не пользовался). Но у JOIN немного другой смысл, она декартово обеежиняет таблицы, типа
Код:
SELECT f_name, content
FROM content
JOIN fileds ON f_id = c_f_id
LIMIT 0 , 30
FROM content
JOIN fileds ON f_id = c_f_id
LIMIT 0 , 30
Но если ты вспомнишь как это реализовать, сообщи, очень интересно.
PS Все мои коллеги сказали что скорее всего это невозможно :{
Мне тоже когда-то говорили, что это невозможно. Но это не так. Я лично это делал. Такая операция, естественно, очень медленная, но зато невероятно эффективная. Что она есть, я знаю абсолютно точно.
Постараюсь еще в других местах поискать. Спасибо за интерес :)