在MySQL中加入多个不相关的表

时间:2010-02-04 05:13:20

标签: sql mysql

我有一个网站,可以在多个表格中存储<select>个选项,并根据各个页面提取所有相关选项。目前,我结束了这样的查询:SELECT foo FROM foo_tbl;SELECT bar FROM bar_tbl;etc。这不是一个真正的问题,但我必须单独迭代每个选择结果。

我想将它们全部提取到单个网格中,然后执行类似

的操作
if $row['foo'] != NULL { add to the foo options }
if $row['bar'] != NULL { add to the bar options }
etc

如果我使用像SELECT DISTINCT f.foo, b.bar FROM foo_tbl AS f, bar_tbl AS b这样的查询,我最终会得到每个可能的行组合(第一个foo第一个条形,第一个foo第二个条形图,第二个foo第一个条形图,第二个foo第二个条形图等等)。 / p>

有没有办法像这样做一个select,并且只有列中每个元素的一次实例,并用空值填充列中的其余行?

3 个答案:

答案 0 :(得分:8)

你考虑过使用联盟

吗?
select foo as "f1" from footable where ..whatever..
union
select bar as "f1" from bartable where ..whatever..

这会给你一个结果集..但如果这些表真的没有任何关联......这对你来说仍然没有多大帮助......

答案 1 :(得分:8)

您可以执行以下操作: 假设表foo具有列a,b,c和表格栏具有列d,e,f

Select 'isFOO', a, b, c, null, null, null from foo
Union All
Select 'isBAR',null, null, null, d, e, f from bar

答案 2 :(得分:1)

或者可能是这样的:

(从那里选择a,b,c,'1'作为数字......) 联盟 (从那里选择a,null,null,'2'作为数字......) 联盟 (从那里选择a,b,null,'3'作为数字......) 按编号排序