我正在尝试使用以下代码加入以下表格,但我无法加入最后一列。
Table:magazine
id_mag **mag_name** id_freq
Table:frequency
id_freq **freq_name**
Table:copy
id_mag **id_copy** **copy_date** copy_price copy_page_number
Table:article
id_art **art_name** **art_page_number**
Table:copy_art
id_mag **id_copy** id_art article_page_num
我想显示包含以下列的表格。表格杂志中的专栏,频率,副本,文章&有** **的copy_art是我感兴趣的那些:
mag_name freq_name id_copy copy_date art_name art_page_number
我使用以下代码获得了下表:
SELECT * FROM magazine
JOIN frequency ON magazine.id_freq = frequency.id_freq
JOIN copy_art ON revista.id_mag=copy_art.id_mag
JOIN article ON copy_art.id_art=article.id_art
JOIN copy ON copy_art.id_copy=copy.id_copy;
以下是图片中显示的每列名称的翻译:
id_rev = id_mag
nom_rev = mag_name
id_frec = id_freq
nom_frec = freq_name
id_rev = id_mag
id_ejem = id_copy
id_art = id_art
num_pag = article_page_num
nom_art = art_name
num_pag_art = art_page_number
fecha_ejem = copy_date
precio = copy_price
我怀疑如下:
我该怎么办才能拿到桌子?
mag_name freq_name id_copy copy_date art_name article_page_num
非常感谢您的支持!
答案 0 :(得分:0)
你必须确保其中一个表有一个外键供articulo表加入。
如果你添加它(例如在revista表中),你可以用这样的东西对所有表进行JOIN:
SELECT * FROM revista
JOIN frecuencia ON revista.id_frec = frecuencia.id_frec
JOIN ejemplar ON revista.id_rev = ejemplar.id_rev
JOIN articulo ON revista.id_art = articulo.id_art;
有关示例,请参阅this fiddle(我在此处查询*,您可以将其更改为您需要的列)。
答案 1 :(得分:0)
如果您只想在输出中添加几列,则必须列出您想要的列。数据的关键结构不清楚(意味着它不清楚哪些列是每个表的主键);您id_mag
和id_copy
列都显示在copy
和copy_art
中,并且它们是否是复合键或{{ 1}}就足够了。鉴于我们没有这些信息,我们必须将您的SELECT语句及其连接作为福音,但我不相信这是正确的。
您写道:
id_copy
这会收集所有提到的表中的所有列,这是浪费的。因此,您需要指定您想要的列:
SELECT *
FROM magazine
JOIN frequency ON magazine.id_freq = frequency.id_freq
JOIN copy_art ON revista.id_mag=copy_art.id_mag
JOIN article ON copy_art.id_art=article.id_art
JOIN copy ON copy_art.id_copy=copy.id_copy;
我不完全确定您在查询中需要SELECT m.mag_name, f.freq_name, c.id_copy, c.copy_date, a.art_name, a.art_page_number
FROM magazine AS m
JOIN frequency AS f ON m.id_freq = f.id_freq
JOIN copy_art AS y ON m.id_mag = y.id_mag
JOIN article AS a ON y.id_art = a.id_art
JOIN copy AS c ON y.id_copy = c.id_copy;
表,但我假设您比我更了解您的数据。