【发布时间】:2016-06-17 09:15:28
【问题描述】:
所以我有 2 个查询,我想将它们一起用于向用户生成一个输出结果。输出向用户描述了从 A 到 B 的旅程。当我尝试将第一个查询的结果连接到第二个查询时,我不断收到语法错误。
Query failed: ERROR: syntax error at or near "UNION" LINE 6: UNION ^
我看过一个类似的问题,但提供的解决方案和讨论似乎不起作用。
$name = pg_escape_string($_POST['name']); // Start destination from user input
$name2 = pg_escape_string($_POST['name2']); // End destination from user input
//If no results are given, the following query below will execute instead.
if (pg_num_rows($result) == 0 ) {
$query = "SELECT dt1.name as name1,dt1.time as time1,dt2.name as name2,dt2.time as time2
From departure_times as dt1
inner join departure_times as dt2 on dt2.tram_id = dt1.tram_id
UNION
SELECT dt1.name as name3,dt1.time as time3,dt2.name as name4,dt2.time as time4
From departure_times as dt1
inner join departure_times as dt2 on dt2.tram_id = dt1.tram_id;
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
} .....
The desired output I am looking for is the following :
------------------------------------------------------------------------
name1 | time1 | name2 | time2 | name3 | time3 | name4 | time4
------------------------------------------------------------------------
【问题讨论】:
-
在每个子查询周围添加括号:
(select ... limit 5) union (select ... limit 5) -
像这样:@Abelisto $query = ("SELECT dt1.name as name1,dt1.time as time1,dt2.name as name2,dt2.time as time2 从department_times 作为dt1 内部加入department_times 作为dt2 on dt2.tram_id = dt1.tram_id where dt1.name = '$name' and dt2.name = 'CitySquare' ) UNION (SELECT dt1.name as name3,dt1.time as time3,dt2.name as name4,dt2. time as time4 从department_times as dt1 内部加入department_times as dt2 on dt2.tram_id = dt1.tram_id where dt1.name = 'CitySquare' and dt2.name = '$name2' LIMIT 5");
-
这仅显示列 name1、time1、name2、time2 而不是其余列。它正在获取数据,但我希望两个查询都位于不同的列中@Abelisto
-
UNION垂直连接查询。要横向加入,请改用JOIN。 -
不要编辑你的问题,让它变得无用!
标签: php sql database postgresql