我有4個表,default_table,表-A,表-B,table_c,各有兩列,
我想選擇name
和id
從所有的表,然後排序,
我嘗試"SELECT Name,ID FROM default_table, table_a, table_b, table_c ORDER BY Name"
但是這給我的錯誤,所以有人可以幫我解決這個問題,我需要的代碼在SQL或PHP,甚至是JavaScript的,如果它可以從兩個表不是爲了它
2
A
回答
5
由於order by
unioning後應用,你可以做:
select id, name from default_table
union all select id, name from table_a
union all select id, name from table_b
union all select id, name from table_c
order by name
你的問題是,你正在做的所有的笛卡爾乘積表中的數據,所以它無法弄清楚其中id
或name
你的意思是。即使可以,由於乘法效應,你會得到比預期更多的行方式。你想加入數據只需加入所有的行到輸出。
進一步解釋的區別,假設你有兩個表:
table1 table2
====== ======
id name id name
-- ---- -- ------
1 pax 1 jill
2 bob 2 debbie
3 joe
查詢:
select a.id, a.name, b.id, b.name from table1 a, table2 b
(笛卡爾乘積)會給你:
1 pax 1 jill
1 pax 2 debbie
2 bob 1 jill
2 bob 2 debbie
3 joe 1 jill
3 joe 2 debbie
(行數是產品各行計數),而:
select id, name from table1
union all
select id, name from table2
(工會)會給你:
1 pax
2 bob
3 joe
1 jill
2 debbie
(行數是個體行數的總和)。
+0
您的解決方案也工作,並且更短,謝謝 – nyongrand 2012-03-01 01:29:58
0
嘗試是這樣的
SELECT
t1.name AS t1_name, t1.id AS t1_id,
t2.name AS t2_name, t2.id AS t2_id,
t3.name AS t3_name, t3.id AS t3_id,
t4.name AS t4_name, t4.id AS t4_id
FROM
default_table AS t1,
table_a AS t2,
table_b AS t3,
table_c AS t4
ORDER BY t1.name
+2
你沒有加入表,這會產生交叉-產品。 – Diego 2012-03-01 01:23:02
1
我猜你需要UNION
(或UNION ALL
):
SELECT *
FROM
(SELECT Name, ID
FROM default_table
UNION ALL
SELECT Name, ID
FROM table_a
UNION ALL
SELECT Name, ID
FROM table_b
UNION ALL
SELECT Name, ID
FROM table_c
) AS un
ORDER BY Name
相關問題
- 1. 我創建了兩個表,嘗試爲第二個創建外鍵,它不起作用,但是我能夠從第二個創建它時獲得爲什麼?
- 2. ActiveRecord的 - 爲了通過兩個協會從同一個表
- 3. 爲了從2個表
- 4. 這兩個循環都認爲表總是零,即使它不是
- 5. 使用了兩個不同的表
- 6. 從兩個不同的表
- 7. 從兩個不同的表
- 8. 從兩個選擇行連接表不是在第三個表
- 9. Mysql外鍵引用兩個列,它們是兩個不同表中的主鍵
- 10. WebStorm 2016.2.0添加了兩個空格鍵而不是製表符
- 11. 排序ACCNO的字段,它是從兩個不同的路徑
- 12. 類,它實現了兩個接口
- 13. 爲了兩個結構
- 14. 兩個collection_select將它保存爲兩個不同的記錄
- 15. 加入兩個表,顯示值從兩個表除了關節行
- 16. 從兩個表
- 17. 從兩個表
- 18. 從兩個表
- 19. 從兩個表
- 20. 從兩個表
- 21. 從兩個表
- 22. 從兩個表
- 23. 從兩個表
- 24. 從兩個表
- 25. 從兩個表
- 26. 從兩個表
- 27. 薩拉特 - 爲什麼它創建了兩個ID字段
- 28. 我爲同一個參數調用了兩次和數,它是否重複了這個努力?
- 29. 從列表中選擇的最佳方式 - 是不是兩個列表框變得有點老了?
- 30. 將數據從一個表更新爲另一個表,它們處於兩個不同的模式
Javascript是一種客戶端技術,因此不能直接與mysql進行交互。你得到的錯誤是什麼,這將有助於我們? – ncremins 2012-03-01 01:13:57
'SELECT Error Name is ambiguos',類似於 – nyongrand 2012-03-01 01:15:37
這是因爲你在多個表中有相同的列名,所以db不知道你想要哪一列 – scibuff 2012-03-01 01:17:18