MySQL加入不同的表

时间:2014-09-07 18:58:06

标签: mysql sql join

我正在尝试使用以下代码加入以下表格,但我无法加入最后一列。

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

Table 1

我怀疑如下:

  • 我该怎么办才能拿到桌子?

    mag_name freq_name id_copy copy_date art_name article_page_num

非常感谢您的支持!

2 个答案:

答案 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_magid_copy列都显示在copycopy_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; 表,但我假设您比我更了解您的数据。