假设我有这个问题:
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
答案 0 :(得分:1)
这只是第二张表的内部联接:
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_data
加入second_table
operation_code
,然后加入我们在新字段中引用的语句的SELECT
部分。请注意,对于operation_code
因为它存在于查询中的两个表中,我们必须指定我们想要的operation_code
来自list_data
表(要么是因为它是内部的,所以加入,但必须指定)。
答案 1 :(得分:1)
如果您还想满足在同一列中返回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."'