2016-05-13 85 views
-1
SELECT et.*, 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_waittime, 
(SELECT el.mode FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_mode, 
(SELECT el.time FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_time, 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_fare, 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_waittime, 
(SELECT el.mode FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_mode, 
(SELECT el.time FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_time, 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_fare, 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,2) AS leg3_waittime, 
(SELECT el.mode FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,2) AS leg3_mode, 
(SELECT el.time FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,2) AS leg3_time, 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,2) AS leg3_fare, 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,3) AS leg4_waittime, 
(SELECT el.mode FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,3) AS leg4_mode, 
(SELECT el.time FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,3) AS leg4_time, 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,3) AS leg4_fare 
FROM entitytrip as et 
+0

你想要做什么? 似乎你正在为同一个表中的每一列做出选择,这是疯狂的 – Borjante

+0

这是要求创建这样的视图.... –

回答

0

没有试图了解你想要做什么,我看到最后8个子查询的限制为1,2或1, 3。这些子查询将返回多行,所以你最好将其更改为2,1 & 3,1

SELECT et.*, 
 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_waittime, 
 
(SELECT el.mode FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_mode, 
 
(SELECT el.time FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_time, 
 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_fare, 
 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_waittime, 
 
(SELECT el.mode FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_mode, 
 
(SELECT el.time FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_time, 
 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_fare, 
 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 2,1) AS leg3_waittime, 
 
(SELECT el.mode FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 2,1) AS leg3_mode, 
 
(SELECT el.time FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 2,1) AS leg3_time, 
 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 2,1) AS leg3_fare, 
 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 3,1) AS leg4_waittime, 
 
(SELECT el.mode FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 3,1) AS leg4_mode, 
 
(SELECT el.time FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 3,1) AS leg4_time, 
 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 3,1) AS leg4_fare 
 
FROM entitytrip as et

0
SELECT et.*, 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_waittime, 
(SELECT el.`mode` FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_mode, 
(SELECT el.`time` FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_time, 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1) AS leg1_fare, 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_waittime, 
(SELECT el.`mode` FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_mode, 
(SELECT el.`time` FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_time, 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 1,1) AS leg2_fare, 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 2,1) AS leg3_waittime, 
(SELECT el.`mode` FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 2,1) AS leg3_mode, 
(SELECT el.`time` FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 2,1) AS leg3_time, 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 2,1) AS leg3_fare, 
(SELECT el.waitTime FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 3,1) AS leg4_waittime, 
(SELECT el.`mode` FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 3,1) AS leg4_mode, 
(SELECT el.`time` FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 3,1) AS leg4_time, 
(SELECT el.fare FROM entityleg as el WHERE et.tripId=el.tripId LIMIT 3,1) AS leg4_fare 
FROM entitytrip as et 

以下是更正代码。由于时间模式已经在mysql中预定义。因此,为了让mysql将它理解为列名,你必须使用`时间``模式`

也出现“子查询返回多于1行”,因为您错位了限制和偏移。而不是limit 2,1您使用了limit 1,2。同样使用limit 3,1limit 1,3