【问题标题】:MYSQL Join 2 tables with 2 relations tableMYSQL 用 2 个关系表连接 2 个表
【发布时间】:2017-07-28 15:17:17
【问题描述】:

您好,我需要从数据库中获取数据,但我不知道该怎么做...

它们有“boutiques”表和“boutiques_categories”以及它们之间的关系表,名称为“boutiques_categories_categories”

这里是如何设置的:

boutiques
id    name
1     X_boutiques2_name
2     Y_boutiques_name

Boutique2
id   name
1    X_boutiques2_name
2    Y_boutiques2_name

boutiques_categories
id   name
1    X_categorie_name
2    Y_categorie_name

boutiques_categories_categories
boutique_id              categorie_id
X_boutique_id            X_categorie_id
Y_boutique_id            Y_categorie_id

我想创建一个 SQL 来合并和打印数据的 CSV,如下所示:

export
boutiques_id    boutique_name     boutiques_categories_categorie_name
boutiques2_id   boutique2_name    boutiques_categories_categorie_name

我正在尝试 UNION 那两个表

SELECT A.* 
FROM boutiques A 
UNION select B.* FROM boutiques2 B

它正在工作,但现在我需要加入类别名称,但我不知道该怎么做。试过了:

SELECT A.* 
FROM boutiques A 
UNION select B.* 
FROM boutiques2 B 
 left join 
  boutiques_categories BC ON BC.id = 
   (
     SELECT BCC.categorie_id 
     FORM 
      boutiques_categories_categories BCC 
     WHERE BCC.boutique_id = BC.id
   )

但是我遇到了无法解决的 MYSQL 错误。

#1242 - Subquery returns more than 1 row 

感谢您的宝贵时间。

【问题讨论】:

  • 您不需要使用union。这用于将多个选择语句作为单个结果返回。 join 语法就是您所需要的。
  • 但是我确实需要多个选择语句,因为我需要从精品店和精品店2中选择数据,然后将类别名称添加到精品店数据中。
  • 抱歉,我正要在重新阅读您的问题后编辑我的评论。你对工会的看法是对的。如果在此期间没有其他人回答,我会尽快写一个查询。
  • 非常感谢,我仍在努力解决我的问题,但我不是 SQL 专家!
  • 请正确格式化代码。其他人很难阅读。

标签: mysql database phpmyadmin export-to-csv


【解决方案1】:

您可以将boutiques 和Boutique2 合并(或union all,具体取决于您想要的数据)到派生表中,然后通过精品店_类别_类别将其加入到精品店_类别。

您在问题中包含的表格数据似乎并不完全准确。具体来说:包含与关联表的 id 列不匹配的 Boutiques_categories_categories 和 categorie_id 值。我只是假设 Boutiques_categories_categories 具有 int ID 值。如果不是这种情况,请在 cmets 中说明,我可以适当调整查询。

试试这个查询,看看它是否返回你期望的数据:

select 
    b.id, b.name, c.name
from
    -- Get the boutiques rows from the unioned tables
    (
        select id, name from boutiques
        union
        select id, name from Boutique2
    ) as b
    -- Join in boutiques_cateogires_categories
    join boutiques_categories_categories cc
        on (b.id=cc.boutique_id)
    -- Join in boutiques_categories
    join boutiques_categories c
        on (cc.categorie_id=c.id)

【讨论】:

  • 谢谢!这正是我所需要的!对不起,如果我的问题不是很清楚,但你说得对。
  • @SebastienB。很高兴它对你有效!不要担心你的问题。为了将来参考,最好提供一个确切的数据示例,然后单独解释。因此,不要在boutique_id 列中写X_boutique_id,而应该只写1,然后使用问题的主体来解释“精品_id 列与精品表中的id 匹配”。
猜你喜欢
  • 2015-05-30
  • 1970-01-01
  • 2019-08-22
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-15
相关资源
最近更新 更多