Sql 通过一列对多个表进行排序/选择
我编写这个代码字符串的目的只是为了能够同时引用3个单独的表,但是能够通过单个列选择特定的行。通常这很容易。但是,其中一些列具有相同的名称,具体取决于表 在不连接这些表的情况下,如何从一个或多个同名列中选择包含信息的行 以下是迄今为止选择一个具有唯一名称的列的代码(表/列的名称已出于隐私目的而更改) 现在,我想做的是Sql 通过一列对多个表进行排序/选择,sql,oracle,Sql,Oracle,我编写这个代码字符串的目的只是为了能够同时引用3个单独的表,但是能够通过单个列选择特定的行。通常这很容易。但是,其中一些列具有相同的名称,具体取决于表 在不连接这些表的情况下,如何从一个或多个同名列中选择包含信息的行 以下是迄今为止选择一个具有唯一名称的列的代码(表/列的名称已出于隐私目的而更改) 现在,我想做的是 SELECT * FROM DBASE.APPLE_ORCHARD, DBASE.ORANGE_FIELDS, DBASE.CHERRY_BUSHES WHERE WATER
SELECT *
FROM DBASE.APPLE_ORCHARD,
DBASE.ORANGE_FIELDS,
DBASE.CHERRY_BUSHES
WHERE WATERING = '100';
(假设每个表都有自己的名为“浇水”的列)
我正在使用OracleSQLDeveloper来完成这个项目
数据样本:
Orange_Fields
COLUMNS -
Oranges
Watering
Insects
Intake
Apple_Orchard
COLUMNS -
Apples
Watering
Insects
CO2
Intake
Cherry_Bushes
COLUMNS -
Cherries
Watering
Insects
Temperature
Intake
我有三个不同列的表。有些列具有相同的名称,而有些列不具有相同的名称
如何对信息进行排序以接收以下结果:
SELECT *
FROM DBASE.APPLE_ORCHARD,
DBASE.ORANGE_FIELDS,
DBASE.CHERRY_BUSHES
WHERE Intake = '50';
Intake Apples Oranges Cherries Insects
50 32 4
50 12 3
50 52 8
50 16 12
50 13 0
50 84 2
50 18 2
然而,我收到的结果更像这样
SELECT *
FROM DBASE.APPLE_ORCHARD,
DBASE.ORANGE_FIELDS,
DBASE.CHERRY_BUSHES
WHERE ORANGES = '50';
ORA-00918: column ambiguously defined
由于每个表都没有与其他表相关的内容,因此您必须为每个表创建一个单独的select语句,然后将所有select语句放在一起,我相信这就是@jarlh所指的内容,请尝试以下内容:
SELECT *
FROM (
SELECT intake,
apples,
NULL AS oranges,
NULL AS cherries,
insects
FROM dbase.apple_orchard
UNION ALL
SELECT intake,
NULL AS apples,
oranges,
NULL AS cherries,
insects
FROM dbase.orange_fields
UNION ALL
SELECT intake,
NULL AS apples,
NULL AS oranges,
cherries AS cherries,
insects
FROM dbase.cherry_bushes
) WHERE intake = '50'
ORDER BY insects;
在派生表中执行UNION ALL。在主WHERE子句中输入条件。编辑您的问题并提供示例数据和所需结果。切勿在
FROM
子句中使用逗号。始终使用正确、明确的JOIN
语法。
SELECT *
FROM (
SELECT intake,
apples,
NULL AS oranges,
NULL AS cherries,
insects
FROM dbase.apple_orchard
UNION ALL
SELECT intake,
NULL AS apples,
oranges,
NULL AS cherries,
insects
FROM dbase.orange_fields
UNION ALL
SELECT intake,
NULL AS apples,
NULL AS oranges,
cherries AS cherries,
insects
FROM dbase.cherry_bushes
) WHERE intake = '50'
ORDER BY insects;