2017-09-01 106 views
0

我搜索了很多次,做了我想做的事情,但找不到任何東西。我知道我必須使用JOIN或UNION來完成它,但我是SQL新手,並且難以理解它是如何工作的。尤其是整個依賴關係。從兩個不同列表中選擇不同列數的數據

這是我的挑戰,我的數據庫中有兩個表格(還有更多),一個叫做玩家,另一個叫做組織。

我沒有相同數量的列在兩個表中,並且沒有任何依賴關係,如果我理解正確的話。

在我的 '球員' 表,我需要列出以下幾列信息: ID,DEVICE_ID和user_id說明 -

在我的 '組織' 表中,我有一個名爲列名字

我想列出所有「DEVICE_ID」條目是在給定的「」的關係。這是我想作爲查詢:

select user_id, device_id from players 
join 
select name from organizations where name like 'test'; 

棘手的部分是,有與這兩個表相同的值沒有列。我的意思是,我的'組織'表中存在id或user_id,但是一個表項的值將不同於一個表。由於沒有將條目鏈接在一起的信息,我想沒有辦法做到這一點,但我不是專家,因爲我說過,所以也許你們有一個想法。提前致謝。

+1

添加適當的數據樣本和預期結果 – scaisEdge

+2

不知道每個表中的哪些列/類型是一種處理連接或其他類型的查詢的好方法。運行以下兩個查詢,然後用兩個表的表結構更新你的問題:'SELECT * FROM players LIMIT 1' and'SELECT * FROM organizations LIMIT 1' –

+3

你是什麼意思「我想列出所有」device_id 「與某個給定」名稱「有關的條目。」如果您確認表格之間沒有關係? – scaisEdge

回答

0

首先,感謝你們所有人的驚人快速答案。有超過20列的玩家的桌子。做

SELECT * FROM players LIMIT 1; 

將導致一個不全面的一堆字符。既然已經夠複雜了,我決定不這樣做。

@scaisEdge我認爲這將有可能通過做類似的事情;從玩家中選擇device_id,其中名稱如組織的「測試」名稱

現在我知道它不起作用,因爲這兩個表之間沒有關係。我希望我會有類似players.organization_id(我一開始沒有編程這個東西......),但事實並非如此,我會嘗試尋找另一種方式。

@ADyson我希望有一個第三個表,它是相對於「組織」但後來,我可能會遇到的困難,使以「玩家」的關係再次全息?有沒有辦法知道哪些表與我正在工作的表相關,如果是,哪一列恰恰是這種關係?

+0

「是否有辦法知道哪些表與我正在處理的表相關,如果是,哪個列正好使該關係成爲」假設數據庫具有正確定義的外鍵,那麼它將在CREATE TABLE定義中外鍵被定義。通常您的DBMS的數據庫GUI將能夠生成這樣的語句。根據您的DBMS,可能會有其他腳本可以運行,這些腳本可以發現並映射表之間的關係。但只有在創建表時實際定義了關係纔有效。如果他們不是,你必須猜測 – ADyson

相關問題