2014-09-01 82 views
0

JOIN新手,並在這裏看到了很多答案在stackoverflow ...我想我是這樣錯誤的方式 - 任何幫助非常感謝!MySql - INNER JOIN在兩個表上 - 重複結果

我有兩個表我想從兩個不同的數據庫,加盟:

數據庫:ERED
表:14jan

dev    datepicker 
-------------------------- 
Ananda   2014-02-01 
Anita   2014-02-01 
Syamasundari 2014-02-01 
Ananda   2014-03-04 
Anita   2014-03-04 
Syamasundari 2014-03-04 
Ananda   2014-05-06 
Anita   2014-05-06 
Syamasundari 2014-05-06 

數據庫:calpaid
表: bookings_items

id  desc_en 
--------------- 
149  Ananda 
250  Anita 
427  Syamasundari 

結果我會like..and預期:

表:預訂(ID是自動遞增)

id id_item  the_date id_state id_booking 
-------------------------------------------------- 
1 149   2014-02-01 ok   ok 
2 149   2014-03-04 ok   ok 
3 149   2014-05-06 ok   ok 
4 250   2014-02-01 ok   ok 
5 250   2014-03-04 ok   ok 
6 250   2014-05-06 ok   ok 
7 427   2014-02-01 ok   ok 
8 427   2014-03-04 ok   ok 
9 427   2014-05-06 ok   ok 

查詢我使用返回重複的結果:

QUERY

INSERT INTO calpaid.bookings (id,id_item,the_date,id_state,id_booking) 
SELECT '$id', b.id, e.datepicker, '$id_state', '$id_booking' 
FROM ered.14jan e 
INNER JOIN 
    calpaid.bookings_items b 
    ON e.dev = b.desc_en 

我對此有錯嗎? 我已經嘗試了一下GROUP和DISTINCT,但沒有運氣。

感謝 柴坦亞

+5

那些不重複的結果。看看日期和ID列,你會發現它們是不同的。 – 2014-09-01 12:21:04

+0

如果你注意到了(那不是我們想要的),那麼是否還有其他我們想念的東西,或者你想要改變以適應? – jbutler483 2014-09-01 12:33:45

+0

謝謝戈登,不知何故該帖不顯示自動遞增數字1-9 ...我會嘗試編輯,現在 – 2014-09-01 12:35:14

回答

0

如果我是正確的,你想這個事情:

INSERT INTO calpaid.bookings (id,id_item,the_date,id_state,id_booking) 
SELECT '$id', b.id, e.datepicker, '$id_state', '$id_booking' 
FROM ered.14jan e 
INNER JOIN 
    calpaid.bookings_items b 
    ON e.dev = b.desc_en 
group by id_item 
+0

返回此消息: 將數據添加到數據庫時出錯:'組語句'中的未知列'id_item' – 2014-09-01 12:50:10

0

你只是有點繞了錯誤的方式。你可能想要的是:

INSERT INTO calpaid.bookings(id_item, the_date, id_state, id_booking) 
    SELECT b.id, e.datepicker, '$id_state', '$id_booking' 
    FROM ered.14jan e INNER JOIN 
     calpaid.bookings_items b 
     ON e.dev = b.desc_en ; 

也就是說,離開idinsert的一起。這假定calpaid.bookings(id)是自動遞增的。如果不是,則應該設計表,以便id是一個自動遞增的主鍵。然後,當您向該字段中插入值時,它會自動遞增。

如果不適合你出於某種原因,你可以使用一個變量,而不是:

INSERT INTO calpaid.bookings(id, id_item, the_date, id_state, id_booking) 
    SELECT (@rn := @rn + 1), b.id, e.datepicker, '$id_state', '$id_booking' 
    FROM ered.14jan e INNER JOIN 
     calpaid.bookings_items b 
     ON e.dev = b.desc_en CROSS JOIN 
     (SELECT @rn := 0) vars 
+0

謝謝戈登,id已經是自動遞增的主鍵。 嘗試了上面的建議... 得到一組行自動遞增1-9,那很好, 但隨後行重複自動遞增從10-18 – 2014-09-01 12:59:44

+0

@CaitanyaCandradas。 。 。這是正確的行爲。你想要查詢做什麼? – 2014-09-01 13:02:17

+0

問題是結果如下: 'ID id_item the_date id_state id_booking 8 427 2014年3月4日確定確定 9 427 2014年5月6日確定確定 ... 17 427 2014-03 -04好吧 18 427 2014-05-06 ok ok ' – 2014-09-01 13:06:10