1

テーブルが少ない

table201202
table201203
table201204
table201205  
...
tableversion

私にtableversionは列があります: 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

しかし、tableversion では先頭に 0 がない月があるため、5 があるかどうかを確認してから 05 に変更する必要があります。変数が 12 の場合は何もありません。どうすればいいですか?

わかりました、今私はこのようなものを持っています

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

しかし、それは機能しません

4

3 に答える 3

3

ここに見られるように、LPAD を使用して下さい:

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

于 2012-05-07T05:22:02.277 に答える
1

月の比較が気になる部分で試してみてください

IF(tableversion.month < 10, CONCAT('0', tableversion.month), tableversion.month)
于 2012-05-07T05:19:55.383 に答える
1

IF声明はおそらくうまく機能しないと思いますが、その主張を裏付けるデータはありません.

同じことを達成するために、IF ステートメントに代わるこの代替手段を試すことができます。 SELECT *, LPAD(month, 2, '0') as month2 ....

于 2012-05-07T05:22:41.687 に答える