0

私のサイトには、顧客が部品を注文したり、自転車を修理に持ち込んだりした個別の事例をリストしたいページがあります。これらのそれぞれのデータは、別々のテーブルに含まれています。最終的には、これらを日付で並べ替え、ORDER BYとCOALESCEを使用してこれを機能させますが、最初にデータを取得する必要があり、その方法がわかりません。

2つのテーブルは無関係であるため、データを結合するために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

null 列を使用するのはどうですか? 最初のテーブルには列 name、date、pieces があり、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
于 2012-07-26T18:18:41.527 に答える
0

ソリューション A

(1) パーツと (2) サービスのリクエストを処理するには、2 つのクエリが必要です。この 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 に答える