我的网站上有一个页面,我想列出客户订购零件或将自行车送去维修的单独实例。每个数据都包含在单独的表中。最终我将按日期对这些进行排序,并使用ORDER BY和COALESCE来完成这项工作,但首先我必须提取数据而我无法弄清楚如何去做。
由于两个表不相关,我不会使用JOIN来组合数据,我想我可能会使用UNION,但后来了解到联合的数据和列数需要相似。我看到有人在某个地方呕吐了一个逗号,但是我无法让我去工作。
这就是我所拥有的:
$result = mysql_query("SELECT
p.part_id,
p.part_num,
p.descr,
p.vendor,
p.date_entered,
p.date_ordered,
p.date_rcvd,
s.serv_id,
s.make,
s.model,
s.yr,
s.vin,
s.mileage,
s.in_date,
s.out_date
FROM parts p, services s
WHERE cust_id = '$cust_id'");
if (mysql_num_rows($result) == 0) {
$transactions = array();
} else {
while ($row = mysql_fetch_assoc($result)) {
$transactions[] = $row;
}
}
稍后
<? foreach ($transactions as $transaction): ?>
<? if($transaction['part_id'] && $transaction['part_id'] != "") { ?>
[DISPLAY PART INFO]
<? } elseif($transaction['serv_id'] && $transaction['serv_id'] != "" { ?>
[DISPLAY SERVICE INFO]
<? } ?>
<? endforeach; ?>
有什么想法吗?
答案 0 :(得分:2)
关于使用空列的问题? 嗯第一个表有列名,日期,件和第二个name_cust,date_bike_entered你可以做
Select name, date, pieces, null, null from table1
Union All
Select null, null, null, name_cust, date_bike_entered from table2
答案 1 :(得分:0)
解决方案A
您需要两个查询来处理(1)部分和(2)服务的请求。你需要一些逻辑来区分这两者。
解决方案B
SELECT COUNT(*) FROM parts WHERE part_id = $transaction['part_id']
SELECT COUNT(*) FROM services WHERE serv_id = $transaction['serv_id']
这将为您提供每个结果的数量。添加逻辑以根据结果提取数据。但是,如果两个查询都有结果,则需要处理逻辑。
解决方案C
有一个只允许part_id或serv_id的广播形式,并根据用户的选择进行查询。