繁体   English   中英

如何在同一选择语句中从第一张表的列值中选择第二张表的数据?

[英]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

我想向其他表格的结果中添加一些数据。 像这样:

john, smith, 100 - description for 100, 000000001
john, doe, 200 - description for 200, 000000002
jane, doe, 300 - description for 300, 000000003

另一个表具有一个operation_code列和一个称为operation_text的描述列。 因此,当原始查询正在通过第一个表来获取记录时,它是否可以使用operation_code号来从operation_codes表中获取该操作代码的描述?

不知道这是否重要,但是它是否需要适合我使用的这种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:

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."'

在这里,我们加入list_datasecond_tableoperation_code再向上的SELECT ,我们在新的领域带来的声明部分。 请注意,对于operation_code因为它存在于查询中的两个表中,所以我们必须指定所需的operation_code来自list_data表(由于它是一个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."'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM