【问题标题】:MySQL: Multiple tables (one time all columns, three times only a single column)MySQL:多个表(一次所有列,三次仅单列)
【发布时间】:2015-05-05 09:33:30
【问题描述】:
$sql = 'SELECT * 
        FROM table_all ta
        INNER JOIN table11 ta11 
        ON ta11.column1 = ta.column1
        INNER JOIN table12 ta12
        ON ta12.column2 = ta.column2
        INNER JOIN table13 ta13
        ON ta13.column3 = ta.column3';

这是我目前正在处理的 PHP 程序的 sql 语句。它实际上工作正常,但我对这个声明的结果不满意。要是有就好了

  1. 只有 table_all 的内容,然后是
  2. 其他三个表的三列(table11table12table13)。

星号在这方面产生了一些问题。

  • table_all 的长度未知。它可以改变大小。

我尝试了 Unionmultiple selects,但只收到错误消息。如何处理这样的问题?

【问题讨论】:

  • 你真正想要什么结果..
  • 基本:table_all + ta11.column1 + ta12.column2 + ta13.column3

标签: php mysql select join


【解决方案1】:

您可以尝试指定要获取哪些列。
如您所见,星号返回所有列。
你应该使用类似的东西:

$sql = 'SELECT ta11.column1, taa12.column2, ta13.column13 
    FROM table_all ta
    INNER JOIN table11 ta11 
    ON ta11.column1 = ta.column1
    INNER JOIN table12 ta12
    ON ta12.column2 = ta.column2
    INNER JOIN table13 ta13
    ON ta13.column3 = ta.column3';

我认为获取ta11.column1taa12.column2ta13.column13 没有意义,因为这些字段已经在 table_all 中(您在 Join 中使用这些列)。但是您可以通过这种方式选择任何您想要的列。

【讨论】:

  • 他们不在那里。它们以不同的方式出现。示例:table_all.column1 = 1; table11.column1 = 水
  • 但是当您执行INNER JOIN 时,您正在“加入”表格(例如 table_all 与 table11 和 table12 和 table13)。结果是另一个表,其中包含所有这些表中的所有列。但“加入”仅发生在 ON 语句相等的行(例如 table_all.column1 = water 和 table11.column1 = water)。
  • 问题是我还需要 table_all 的所有内容。不仅是其他桌子上的东西。我可以通过一些连接轻松地做到这一点。不,我需要 table_all 以及其他三列中的所有内容
  • '选择 ta.*, ta11.column1, taa12.column2, ta13.column13 '
  • 错误:#1051 unknown table ta.* / doesn't work and it doesn't sense,因为我需要table_all内容中的引用
猜你喜欢
  • 1970-01-01
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2015-08-17
  • 1970-01-01
相关资源
最近更新 更多