2012-04-27 111 views
3

我有兩個表:photos (id,path)tags(id,name)。 表格處於多對多的關係,所以我有第三個表格: photos_tags(photos_id, tags_id)在多對多關係中創建表之間的連接

現在,我該如何連接指定路徑的照片和指定名稱的標記? 我想要做這樣的事情:

INSERT INTO photos_tags 
    SELECT photos.id, tags.id FROM photos, tags 
    WHERE photos.path = '/some/path' AND tags.name = 'tag'; 
+1

我不知道具體的SQLite做,但您發佈的INSERT語句是有效的SQL。如果SQLite需要SQL:1999語法,則可能需要將from子句更改爲「照片交叉連接標記」。 – Allan 2012-04-27 16:04:39

回答

2
insert into photos_tags 
(photos_id, tags_id) 
select id, 
    (
     select id 
     from Tags 
     where name = 'tag' 
     ) 
from photos 
where path = '/some/path' 
+0

如果子查詢返回多個行,那麼這不會引發錯誤嗎? – weenoid 2012-04-27 16:01:30

+0

@weenoid不,它不會。它會在這種情況下插入多行,我認爲這是所期望的結果。 – RedFilter 2012-04-27 16:02:31

+0

這是否意味着下面的SQL是有效的:SELECT 1,(選擇2 UNION SELECT 3) – weenoid 2012-04-27 16:16:32

相關問題