【发布时间】:2013-02-07 18:43:14
【问题描述】:
我的数据库中有几个表,我想从几个表中选择几个列,这很好。现在,有第三张表,该表有一个列,其中包含不同的文本值,但对于不同的用户,相同的几个“text_values”,例如:
表3
row userid text_value value
1 user1 text1 value1
2 user1 text2 value2
3 user2 text1 value3
4 user3 text1 value4
...
现在,我想从 Table1 中获取 INFO1 和 INFO2,从 Table2 中获取 INFO3 和 INFO4,然后我想从 Table3 中获取 text_value=text1 的所有值,并将其设为第 5 列,并使用 INFO5,然后从表 3 其中 text_value=text2 并将其设为第 6 列,信息为 6。
我有以下查询,如果我只想要 INFO5 列,则可以正常工作:
SELECT Table1.INFO1, Table1.userid , Table2.INFO2,
Table1.INFO3, Table2.INFO4,
Table3.value AS INFO5
FROM Table1 LEFT OUTER JOIN Table2 ON Table1.userid = Table2.userid
LEFT OUTER JOIN Table3 ON Table1.userid = Table3.userid
WHERE Table3.text_value = 'text1'
但是,我想使用同一个 table3 VALUE 列中的值创建另一列,但是当 TEXT_VALUE = 'text2' 时(对于 'text3'、'text4' 是这样,因为有几个文本要“过滤"开)。
当我将查询更改为以下内容时,它不起作用:
SELECT Table1.INFO1, Table1.userid , Table2.INFO2,
Table1.INFO3, Table2.INFO4,
Table3.value AS INFO5 WHERE Table3.text_value = 'text1'
Table3.value AS INFO6 WHERE Table3.text_value = 'text2'
FROM Table1 LEFT OUTER JOIN Table2 ON Table1.userid = Table2.userid
LEFT OUTER JOIN Table3 ON Table1.userid = Table3.userid
任何指导将不胜感激。
【问题讨论】:
-
其实答案是CASE WHEN
标签: sql select join multiple-columns