簡體   English   中英

MySQL從多個不相關的表中選擇數據

[英]MySQL Select Data from Multiple Unrelated Tables

我在我的網站上有一個頁面,我想列出客戶訂購零件或將自行車送去維修的單獨實例。 每個數據都包含在單獨的表中。 最終我將按日期對這些進行排序,並使用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; ?>

有任何想法嗎?

關於使用空列的問題? 嗯第一個表有列名,日期,碎片和第二個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

解決方案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的無線電表單,並根據用戶的選擇進行查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM