4

いくつかのプレフィックスとサフィックスを含むmySql結果が必要です。これは私のコードです:

SELECT bk_id, bk_rtype, villas_db.v_name AS villa_name
FROM booking_db
INNER JOIN villas_db ON booking_db.bk_vid = villas_db.v_id
WHERE '2012-11-02'
BETWEEN bk_date1
AND bk_date2
ORDER BY bk_id DESC
LIMIT 0 , 30

結果は次のとおりです。

bk_id   bk_rtype    villa_name
30          2           T2
29          3           V1

したがって、次のような結果が必要です。

bk_id   bk_rtype    villa_name     booking_no
30          2           T2         B2-00030
29          3           V1         B3-00029

Bは「-」とsprintf( "%05d"、bk_id)で区切られた予約プレフィックスです。

提案してください。

4

2 に答える 2

6

You may want to use CONCAT and LPAD functions as below:

 SELECT bk_id, bk_rtype, villas_db.v_name AS villa_name, 
        CONCAT('B',bk_rtype,'-', LPAD(bk_id, 5, '0')) AS booking_no
 FROM booking_db
 INNER JOIN villas_db ON booking_db.bk_vid = villas_db.v_id
 WHERE '2012-11-02'
     BETWEEN bk_date1
     AND bk_date2
 ORDER BY bk_id DESC 
 LIMIT 0 , 30 ; 
于 2012-11-02T04:25:26.443 に答える
1

I found my solution:

SELECT bk_id, bk_rtype, villas_db.v_name AS villa_name, concat( 'B', bk_rtype, '-', lpad( bk_id, 5, 0 ) ) AS booking_no
FROM booking_db
INNER JOIN villas_db ON booking_db.bk_vid = villas_db.v_id
WHERE '2012-11-02'
BETWEEN bk_date1
AND bk_date2
ORDER BY bk_id DESC
LIMIT 0 , 30
于 2012-11-02T04:36:39.590 に答える