SQL Inner Join语句没有给出期望的结果

时间:2017-01-03 14:36:13

标签: mysql select join inner-join

希望有人能在这里帮助我。我有以下两个表:

Table: locations
location_id   user_id       city        state
1             1             Los Angeles CA  
2             1             New York    NY
3             1             Chicago     IL
4             2             Dallas      TX
5             3             Denver      CO
6             4             Miami       FL
7             5             Atlanta     GA

Table: events
event_id    user_id     event_name    event_date
1           1           My Event 1    2017-02-01
2           2           My Event 2    2017-03-01
3           3           My Event 3    2017-04-01
4           4           My Event 4    2017-05-01
5           5           My Event 5    2017-06-01

我正在运行以下查询:

SELECT e.event_id,  e.user_id, e.event_name, e.event_date,
       l.user_id, l.city, l.state
FROM events e
INNER JOIN locations l
ON e.user_id = l.user_id
ORDER BY e.event_date ASC

我正在尝试只获取事件表中的记录,但也拉出与两个表共有的user_id匹配的相应城市和州。输出应为:

 event_id   user_id     event_name    event_date    city          state
 1          1           My Event 1    2017-02-01    Los Angeles   CA
 2          2           My Event 2    2017-03-01    Dallas        TX
 3          3           My Event 3    2017-04-01    Denver        CO
 4          4           My Event 4    2017-05-01    Miami         FL
 5          5           My Event 5    2017-06-01    Atlanta       GA

有人能指出我在SQL语句中的错误吗?

2 个答案:

答案 0 :(得分:1)

您从未向我们提供决定为给定用户选择哪个位置的逻辑。一种方法是采用与给定用户相关联的最小 FATAL EXCEPTION: main Process: com.example.nirvan.cameraexample3, PID: 27598 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.example.nirvan.cameraexample3/com.example.nirvan.cameraexample3.MainActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. at android.app.ActivityThread.deliverResults(ActivityThread.java:3432) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3475) at android.app.ActivityThread.access$1300(ActivityThread.java:139) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5086) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. at android.view.ViewGroup.addViewInner(ViewGroup.java:3564) at android.view.ViewGroup.addView(ViewGroup.java:3417) at android.view.ViewGroup.addView(ViewGroup.java:3393) at com.example.nirvan.cameraexample3.MainActivity.onActivityResult(MainActivity.java:105) at android.app.Activity.dispatchActivityResult(Activity.java:5446) at android.app.ActivityThread.deliverResults(ActivityThread.java:3428) at android.app.ActivityThread.handleSendResult(ActivityThread.java:3475)  at android.app.ActivityThread.access$1300(ActivityThread.java:139)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5086)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)

location_id

答案 1 :(得分:1)

这是不可能的,这里的问题是身份1的用户在locations表中有3个元组,选择哪个城市是个大问题。

 1             1             Los Angeles CA  
 2             1             New York    NY
 3             1             Chicago     IL