0

我的网站上有一个页面,我想在其中列出客户订购零件或将自行车送去维修的单独实例。每一项的数据都包含在单独的表格中。最终,我将按日期对这些进行排序,并使用 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; ?>

有任何想法吗?

4

2 回答 2

2

使用空列怎么样?Ih 第一个表有列名称、日期、件数和第二个名称_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
于 2012-07-26T18:18:41.527 回答
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 的单选表单,并根据用户的选择进行查询。

于 2012-07-26T18:13:03.143 回答