2012-05-07 2 views
1

に、私はいくつかのテーブル私が列を持っているtableversionMySQLのクエリ

table201202 
table201203 
table201204 
table201205 
... 
tableversion 

持っている "IF": VERSION_ID ADMIN_ID MONTH YEARを

私はこの

Select * 
FROM tableversion 
LEFT JOIN table(tableversion.month tableversion.year) on 
    table(tableversion.month tableversion.year).Version_ID=tableversion.version_id 

のようなものを取得する必要があります。しかし私が5を持っているかどうかをチェックしてから、05に変えなければなりません。変数が12ならば、それは何もありません。どうしたらいいですか?

[OK]を、今私はこの

SELECT *, CONCAT('table',IF(tableversion.month < 10, CONCAT('0', tableversion.month), tableversion.month),year) as year 
FROM tableversion 
LEFT JOIN year ON tableversion.version_id=year.version_id WHERE ADMIN_ID=11 

#1146 - Table 'database.year' doesn't exist 

のようなものを持っている。しかし、それは

+0

あなたが探しているものである「いつ」、私は思います。 –

+0

@AustinHenleyサンプルを使って投稿をする方法を知っている場合: –

答えて

1

あなたは数ヶ月に

IF(tableversion.month < 10, CONCAT('0', tableversion.month), tableversion.month) 
+0

ここで何が間違っていますか? CONCAT_WS( 'tableversion.year')ON CONCAT_WS( 'tableversion'、 'tableversion.month <10、CONCAT(' 0 '、tableversion.month)、tableversion.month)、' tableversion ' (tableversion.month、tableversion.month)、tableversion.month)、 'tableversion.year')。version_id = tableversion.version_id WHERE ADMIN_ID = 11 LIMIT 10 – breq

+0

最初のCONCAT_WSはテーブルを使用しています。 ?また、元のクエリはテーブルを使用しています(テーブルではなく、多分私が混乱している場所です)。 – Bryan

+0

@breq:それはおそらく別の質問ですが... *どうしますか? – Flimzy

3
を比較する心配エリアでこれを試してみては動作しません。

hereのように、LPADを使用してください:

SELECT LPAD(月、2、 '0')...

+0

私はこれは私の答えよりもはるかに良い笑 – Bryan

1

私はIF文はそううまく機能しないだろうと思うが、私はその主張をバックアップするデータがありません。

あなたは同じことを達成するために、IF文にこの選択肢を試すことができます。 SELECT *, LPAD(month, 2, '0') as month2 ....