0

2つのテーブルにリンクされた一連の結果を表示するmySQLコードの行があります。キーIDによって関連付けられます。この問題は、別のテーブルに一致するキーがない場合に発生します。結果は表示されません。だから私の考えは、if(id = '999'、'General'、'concat(内部結合のないもの))のようなmySQLに何らかの条件を持たせたいということです。私のコードを見てください:

MySQL

SELECT if( log_db.log_bid = '999', 'General', 
CONCAT( 'B', bk_rtype, '-', LPAD( bk_id, 5, '0' ) ) ) AS booking_no,
 booking_db.bk_flg1 AS flight
FROM log_db
INNER JOIN booking_db ON booking_db.bk_id = log_db.log_bid
WHERE log_db.log_stts = '1'
ORDER BY log_db.log_id DESC

私のコードによると。log_bid = '999'の場合、booking_noは' General'を返すはずですが、そうではありません。提案してください。

4

1 に答える 1

2

このようなLEFTOUTERJOINが必要なようです。

SELECT log_db.log_bid,
   CASE WHEN booking_db.bk_id IS NULL THEN 'General' 
   ELSE CONCAT( 'B', bk_rtype, '-', LPAD( bk_id, 5, '0' ) ) END AS booking_no,
   booking_db.bk_flg1 AS flight
FROM log_db
LEFT OUTER JOIN booking_db ON booking_db.bk_id = log_db.log_bid
WHERE log_db.log_stts = '1'
ORDER BY log_db.log_id DESC

これにより、where基準に一致する最初のテーブルのすべてのレコードが2番目のテーブルのレコードと結合されます(一致するものが見つからない場合はnullレコード)。

于 2012-11-10T07:27:19.747 に答える