2016-01-22 47 views
0

我有一個問題,對我來說似乎很基礎,但找不到答案。 我有兩個表:A & B.表A有一列id-s(int),表B連接那些id-s與描述(varchar。) 我想對錶A做一個查詢,我替換id -s與表B的描述(一對一關係)。 我現在有這個疑問:應該很簡單嗎? MySQL查詢:從一個表中替換ID(int)與其他表中的標題(varchar)

select tableA.* from tableA join tableB on (tableA.id=tableB.description); 

這應該做的工作,除了我得到警告1292:「截斷不正確DOUBLE值」。

我明白這是什麼意思,兩種數據類型不匹配。但那麼如何使它工作?我相信這一定是一個簡單的修復,我要求的是一直在使用(例如用書名等替代ISBN)...

任何幫助將不勝感激!

根據要求編輯

對不起的人,我認爲這是一點也不含糊...... Db的結構:

mysql> describe tasks; 
+----------+-----------------------+------+-----+---------+----------------+ 
| Field | Type     | Null | Key | Default | Extra   | 
+----------+-----------------------+------+-----+---------+----------------+ 
| tid  | int(10) unsigned  | NO | PRI | NULL | auto_increment | 
| pid  | int(10) unsigned  | YES |  | NULL |    | 
| username | varchar(15)   | YES |  | NULL |    | 
| task  | varchar(1000)   | NO |  | NULL |    | 
+----------+-----------------------+------+-----+---------+----------------+ 
8 rows in set (0.00 sec) 

mysql> describe projects; 
+-------+------------------+------+-----+---------+----------------+ 
| Field | Type    | Null | Key | Default | Extra   | 
+-------+------------------+------+-----+---------+----------------+ 
| pid | int(10) unsigned | NO | PRI | NULL | auto_increment | 
| title | varchar(200)  | YES |  | NULL |    | 
+-------+------------------+------+-----+---------+----------------+ 
2 rows in set (0.00 sec) 

我想,其中每PID被替換爲「從任務選擇*」與相同查詢中表項目的相應標題相同。

希望它現在更清晰......

+0

這將是一個*簡單的問題*如果你提供的表結構,樣本數據和期望的結果。 – RubahMalam

+1

這是非常奇怪的數據庫設計,如果你的tableA中的「ID」是int類型的,並且這個所謂的「ID」是類型爲varchar的tableB中的「描述」。 請提供您的數據庫結構,我們可以告訴您它應該是什麼樣子。 – GreenTurtle

+0

@Abhik Chakraborty:你可以重新打開,所以我可以將此評論更改爲答案,因爲問題在問題編輯後已經清楚了。 – GreenTurtle

回答

0

您可以簡單地使用下面的查詢來加入這兩個表得到從任務表中的所有條目的內容,即使他們沒有項目附:

SELECT t.tid, t.username, t.task, p.title 
FROM tasks t 
LEFT JOIN projects p ON t.pid = p.pid; 

如果你只是想一個附加的項目任務使用此查詢代替:

SELECT t.tid, t.username, t.task, p.title 
FROM tasks t 
JOIN projects p ON t.pid = p.pid; 
+0

GreenTurtle,非常感謝您的回覆,這正是我所需要的! (ps。我不允許upvote你的解決方案...) –

+0

Ps。對於未來有同樣問題的人來說,有一個小的類型可以避免錯誤的執行:t.task和p.title之間應該有一個逗號。 –

+0

@Willem van Gerven:感謝您的回覆 - 我在回答中修正了錯字。 – GreenTurtle

相關問題