如何使用单个查询从不同的表中获取不同的列?

时间:2014-08-27 14:06:12

标签: java mysql sql sql-server

我需要您对Web应用程序概念的谦逊帮助。我想使用单个查询从不同的表中获取不同的列。所有表中的一列相同,如pk_data(varchar)。但我需要基于pk_data(varchar)列的不同列。例如,我需要来自第一个表的用户名和来自第二个表的地址以及来自第三个表的年龄和来自第四个表的成本。但我还需要在pk_data(varchar)列使用where子句。

我们可以用其他方式理解这个问题。我有一个HashSet变量,其数量为String data(pk_data)。我希望在此HashSet条记录的基础上获取数据。

HashSet的所有字符串都不属于所有表格。

请提出解决此问题的建议。

2 个答案:

答案 0 :(得分:0)

这只是伪代码,因为我实际上并不知道表中的内容和表名是什么......但这是你应采取的一般方法

SELECT u.username, a.address, p.age, b.cost
FROM users u
JOIN address a ON a.pk_data = u.pk_data
JOIN person p on p.pk_data = u.pk_data
JOIN bills b ON b.pk_data = u.pk_data
WHERE u.pk_data = "whatever"

在这里,我只是将表格称为用户,地址,人员,账单......您可以将其更改为您想要的任何内容。但逻辑是加入4个表

答案 1 :(得分:-2)

在其他选项中,您可以使用隐式内部联接:

select
    first_table.pk_data, first_table.user_name, second_table.address, third_table.age, fourth_table.cost
from
    first_table, second_table, third_table, fourth_table
where
    first_table.pk_data = 'value'
    and second_table.pk_data = first_table.pk_data
    and third_table.pk_data = first_table.pk_data
    and fourth_table = first_table.pk_data