2013-04-20 155 views
0

我在MySQL的下一個代碼:子查詢返回多於1行 - MySQL搭配的Visual Studio 2010

("SELECT id_viaje, 
     (SELECT nombre 
     FROM unidades, 
       viaje 
     WHERE id_unidad = id_unidades), 
     (SELECT nombre 
     FROM empleados, 
       viaje 
     WHERE id_empleado = id_conductor), 
     (SELECT nombre 
     FROM empleados, 
       viaje 
     WHERE id_empleado = id_guarda), 
     (SELECT nombre 
     FROM ciudad, 
       viaje 
     WHERE id_ciudad = id_salida), 
     (SELECT nombre 
     FROM ciudad, 
       viaje 
     WHERE id_ciudad = id_llegada), 
     fecha_salida, 
     fecha_llegada 
FROM viaje; ") 

我在每一個的端試圖LIMIT 1,我已經取代=與IN和I不知道爲什麼向我顯示這個錯誤:

22:30:30 SELECT ID_Viaje, (select Nombre from unidades, viaje where ID_Unidad IN (ID_Unidades)) , (select Nombre from empleados, viaje where ID_Empleado IN (ID_Conductor)) ,(select Nombre from empleados, viaje where ID_Empleado IN (ID_Guarda)) , (select Nombre from ciudad, viaje where ID_Ciudad IN (ID_Salida)) , (select Nombre from ciudad, viaje where ID_Ciudad IN (ID_Llegada)) , Fecha_Salida, Fecha_Llegada FROM viaje limit 1  

Error Code: 1242 Subquery returns more than 1 row 

請快速幫助我!

+2

從錯誤消息中,我可以看到您將限制1應用於外部查詢。您需要在每個子查詢中應用限制1。你嘗試過嗎? – ClearLogic 2013-04-20 02:22:27

回答

0

當您的子查詢返回多行時應返回該行,則返回此錯誤。

您的子查詢邏輯是完全錯誤的。當您在SELECT語句中放置子查詢時,必須確保子查詢將始終返回零或一行。

你可以做什麼,現在是把一個LEFT JOIN並在查詢中使用了幾個別名,就像這樣:

SELECT id_viaje, 
     u.nombre AS unidade_nombre, 
     e_con.nombre AS conductor_nombre, 
     e_grd.nombre AS guarda_nombre, 
     c_salida.nombre AS salida_nombre, 
     c_llegada.nombre AS llegada_nombre, 
     fecha_salida, 
     fecha_llegada 
FROM viaje v 
LEFT JOIN unidades u ON v.id_unidad = u.id_unidades 
LEFT JOIN empleados e_con ON e.id_empleado = v.id_conductor 
LEFT JOIN empleados e_grd ON e.id_empleado = v.id_guarda 
LEFT JOIN ciudad c_salida ON e.id_salida = c_salida.id_ciudad 
LEFT JOIN ciudad c_llegada ON e.id_llegada = c_llegada.id_ciudad 
; 

嘗試第一個也是唯一在MySQL Workbench中運行這個,如果它運行successfylly有那麼你應該把它到您的應用程序代碼。

另請注意,我的代碼不應該在第一次嘗試中運行。運行此代碼之前,請進行任何適用的更正。

瞭解更多關於MySQL joinsMySQL subqery

0

你需要使用in操作時,子查詢你的情況返回不止row.But子查詢也是一個problem.Please嘗試使用什麼建議的Rachcha