如何在同一 select 语句中从第一个 table 的列值 select 第二个 table 的数据?
How to select data of 2nd table from column values of 1st table in same select statement?
假设我有这个查询:
SELECT first, last, operation_code, serial_no FROM list_data WHERE cid='".$cid."'
假设查询结果是这样的:
john, smith, 100, 000000001
john, doe, 200, 000000002
jane, doe, 300, 000000003
我想向来自不同 table 的结果添加一些数据。像这样:
john, smith, 100 - description for 100, 000000001
john, doe, 200 - description for 200, 000000002
jane, doe, 300 - description for 300, 000000003
另一个 table 有一个 operation_code 列和一个名为 operation_text 的描述列。因此,当原始查询通过第一个 table 获取记录时,它是否可以使用 operation_code 编号从 operation_code 中获取该操作代码的描述 table ?
不确定这是否重要,但它需要适合我正在使用的这种 csv 文件创建方法。
$output = fopen('php://output', 'w');
fputcsv($output, array('first', 'last', 'operation_code', 'serial_no'));
$rows = mysql_query("SELECT first, last, operation_code, serial_no FROM list_data WHERE cid='".$cid."' ORDER BY last ASC, first ASC");
while ($row = mysql_fetch_assoc($rows)) fputcsv($output, $row);
因此,当创建csv 文件时,我希望代码编号和描述位于同一列中。代码和描述之间没有额外的逗号,除非没有其他方法,否则如果描述在它自己的列中就可以了,如下所示:
Header line of csv:
first, last, operation_code, operation_text, serial_no
body of csv:
john, smith, 100, description for 100, 000000001
john, doe, 200, description for 200, 000000002
jane, doe, 300, description for 300, 000000003
这只是对那一秒的 INNER JOIN table:
SELECT first, last, list_data.operation_code, second_table.operation_text, serial_no
FROM list_data INNER JOIN second_table ON list_data.operation_code = second_table.operation_code
WHERE cid='".$cid."'
在这里,我们在 operation_code
上加入 list_data
到 second_table
,然后在我们引入该新字段的语句的 SELECT
部分向上。注意,对于operation_code
,因为它存在于查询中的两个table中,所以我们必须指定我们要的operation_code
来自list_data
table(两者都可以,因为它是 INNER JOIN,但必须指定)。
如果您还想满足在同一列中返回 operation_code 和 operation_text 的要求,您可以简单地将这两个连接起来:
SELECT first, last, CONCAT(list_data.operation_code,' - ', second_table.operation_text) AS operation, serial_no
FROM list_data INNER JOIN second_table ON list_data.operation_code = second_table.operation_code
WHERE cid='".$cid."'
假设我有这个查询:
SELECT first, last, operation_code, serial_no FROM list_data WHERE cid='".$cid."'
假设查询结果是这样的:
john, smith, 100, 000000001
john, doe, 200, 000000002
jane, doe, 300, 000000003
我想向来自不同 table 的结果添加一些数据。像这样:
john, smith, 100 - description for 100, 000000001
john, doe, 200 - description for 200, 000000002
jane, doe, 300 - description for 300, 000000003
另一个 table 有一个 operation_code 列和一个名为 operation_text 的描述列。因此,当原始查询通过第一个 table 获取记录时,它是否可以使用 operation_code 编号从 operation_code 中获取该操作代码的描述 table ?
不确定这是否重要,但它需要适合我正在使用的这种 csv 文件创建方法。
$output = fopen('php://output', 'w');
fputcsv($output, array('first', 'last', 'operation_code', 'serial_no'));
$rows = mysql_query("SELECT first, last, operation_code, serial_no FROM list_data WHERE cid='".$cid."' ORDER BY last ASC, first ASC");
while ($row = mysql_fetch_assoc($rows)) fputcsv($output, $row);
因此,当创建csv 文件时,我希望代码编号和描述位于同一列中。代码和描述之间没有额外的逗号,除非没有其他方法,否则如果描述在它自己的列中就可以了,如下所示:
Header line of csv:
first, last, operation_code, operation_text, serial_no
body of csv:
john, smith, 100, description for 100, 000000001
john, doe, 200, description for 200, 000000002
jane, doe, 300, description for 300, 000000003
这只是对那一秒的 INNER JOIN table:
SELECT first, last, list_data.operation_code, second_table.operation_text, serial_no
FROM list_data INNER JOIN second_table ON list_data.operation_code = second_table.operation_code
WHERE cid='".$cid."'
在这里,我们在 operation_code
上加入 list_data
到 second_table
,然后在我们引入该新字段的语句的 SELECT
部分向上。注意,对于operation_code
,因为它存在于查询中的两个table中,所以我们必须指定我们要的operation_code
来自list_data
table(两者都可以,因为它是 INNER JOIN,但必须指定)。
如果您还想满足在同一列中返回 operation_code 和 operation_text 的要求,您可以简单地将这两个连接起来:
SELECT first, last, CONCAT(list_data.operation_code,' - ', second_table.operation_text) AS operation, serial_no
FROM list_data INNER JOIN second_table ON list_data.operation_code = second_table.operation_code
WHERE cid='".$cid."'