İçerisinde üç adet datatable var, tableA
, tableB
ve tableAB
. İçerik gerçekten önemli değil, sadece tableA
ve tableB
birincil anahtarlara sahiptir ve tableAB
iki tablodaki tuşları ilişkilendirir. Temel yapısı aşağıdaki gibidir: Ne yapmak istiyorum ne
İçinden Ekle
aId|data
---+----
1 |4
2 |83
bId|data
---+----
1 |a
2 |cd
3 |bf
abId|aId|bId
----+---+---
1 |1 |1
2 |1 |2
3 |2 |3
bir sorguya Bu tabloların üçünün ekler birleştirmek, ama nasıl emin değilim. Çalıştığım şu anki fikir aşağıda, fakat işe yaramıyor. Dikkat edilmesi gereken önemli noktalar aId
'un çok sayıda bId
' a atıfta bulunabileceği, ancak her bir bId
'un sadece bir tane aId
olduğu belirtilecektir. Bu nedenle, aId
'lar mevcut bId
' lardan bahsedemeyebilir. Çarpıştığım büyük şeyler 1) insert
değerini başka bir insert
'dan geliyor, ve 2) tek bir sorguda, bId
'ler için çoklu ekleri simüle ediyor.
Güncel sorgusu:
insert into tableAB(aId, bId)
values((select aId from(insert into tableA(data) values(5))),
(select bId from(insert into tableB(data) values("f"))));
Gerçekten tek sorguda emin çoklu ekler değilim mümkündür ve yukarıdaki bunu yazarken bir yol bilmiyorum. İlk iki ekin kimliklerini almak için LAST_INSERT_ID()
kullanın.
Tek bir sorguda çok sayfalı ekler MySQL tarafından desteklenmez. :( – Sevle
PostGres'te istediğinizi yapabilirsiniz, ancak MySQL tek bir sorguda birden çok tabloya eklemeleri desteklemez. –
Bir LAST_INSERT_ID var, [kılavuz] 'a bakın (http://dev.mysql.com/doc/ refman/5.7/tr/information-functions.html # function_last-insert-id), örnek: http://www.sqlfiddle.com/#!9/a8102/1/0 –