JOIN的新手,并且已经在stackoverflow上查看了很多答案...我想我会以错误的方式解决这个问题 - 任何帮助都非常感谢!
我想从两个不同的数据库加入两个表:
数据库: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
我想要的结果......并期待:
表:预订(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进行了一些实验,但没有运气。
由于 采塔尼亚
答案 0 :(得分: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
答案 1 :(得分: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 ;
也就是说,将id
全部留在insert
之外。这假定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