【问题标题】:Mysql Query JOIN QueryMysql查询JOIN查询
【发布时间】:2011-09-01 15:01:41
【问题描述】:

我有三张桌子。表 A 具有选项名称(即颜色、尺寸)。表 B 具有选项值名称(即 Blue、Red、Black 等)。表 C 通过将选项名称 id 和选项名称值 id 放在一起来建立关系。

我的查询需要显示值和选项的名称,而不是 ID 号。我可以一次做 A 和 B 并获得值和选项名称的列表,但由于值和选项是相关的,我想要一个组合列表。例如。

颜色 - 蓝色 红色 尺寸 - 大 尺寸 - 小

所以我的问题是如何加入这两个查询以获得像上面这样的组合结果。

SELECT products_options.products_options_name FROM products_options
LEFT JOIN products_options_values_to_products_options ON products_options_values_to_products_options.products_options_id=products_options.products_options_id

SELECT products_options_values.products_options_values_name FROM products_options_values
LEFT JOIN products_options_values_to_products_options ON products_options_values_to_products_options.products_options_values_id=products_options_values.products_options_values_id

【问题讨论】:

    标签: mysql join


    【解决方案1】:

    您需要两个连接,如下所示:

    select product_options.product_id,
           option_names.name_id,
           option_names.name,
           option_values.value_id,
           option_values.name
    from product_options
    join option_names using (option_id)
    join option_values using (option_id)
    where product_options.product_id = :product_id
    

    它不会将它们组合在一起以立即在您的变体表中插入,但这是您在 MySQL 中将做的最好的事情。

    【讨论】:

    • 谢谢。这与一个小的修正一起工作。使用 (name_id) 加入 option_names 使用 (value_id) 加入 options_values。我也省略了 where 语句。
    猜你喜欢
    • 2013-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2010-09-14
    • 2021-10-17
    相关资源
    最近更新 更多