scenario:
我一直試**決乙個問題,我希望在兩個表藝術家和**之間進行自然連線,其中藝術家將一列ar_id作為主鍵,而**包含乙個名為ar_id的列,其中**中的外來鍵table是ar_id,指的是藝術家ar_id . 表之間有一對多的關係(乙個藝術家可以有多個**) .
problem:
當我想在兩個表artist和albums之間進行natural join時,它會返回0行,但是當我使用where函式時,它是正常的join,它會返回18行 . 所以我猜問題是外來鍵設定,但我找不到問題
the select code with natural join (doesn't work):
select * from
artists natural join albums;
the select code with normal join where (does work):
select * from
artists join albums
where cdreg.artists.ar_id = cdreg.albums.ar_id;
dll for the two tables
create table artists (
ar_id int primary key,
ge_id int(11) default null,
country_code varchar(2) default null,
name varchar(45) not null,
start_year year(4) default null,
end_year year(4) default null,
foreign key (ge_id) references genres (ge_id),
foreign key (country_code) references countries (code)
create table albums (
al_id int primary key,
ar_id int,
name varchar(45) not null,
release_year year(4) default null,
foreign key (ar_id) references artists(ar_id)
在此先感謝任何幫助:)
[solved]:
我認為自然連線使用外來鍵來連線表,但它使用所有匹配的列名,包括列「 name 」(兩個表中的exsists),因為在資料庫中沒有任何藝術家具有同名** headers 結果是0行 . 解決方案是使用
select * from
artists join albums using(ar_id);
MYSQL自然連線
目標 了解自然連線的特性,知道自然連線的使用方式。概念 natural join,是一種自動尋找連線條件的連線查詢。重點 1.自然連線包含自然內連線和自然外連線。自然內連線 natural join 自然外連線 natural left right join 2.自然連線條件匹配模式 自動尋找相同欄...
mysql三個表連線 使用MySQL連線三個表
我有三個表名為 student table id name 1 ali 2 ahmed 3 john 4 king course table id name 1 physic 2 maths 3 computer 4 chemistry bridge sid cid 1 11 2 1 31 4 2 ...
mysql 連線三個表 使用MySQL連線三個表
使用mysql連線三個表 我有三張桌子 student table id name 1 ali 2 ahmed 3 john 4 king course table id name 1 physic 2 maths 3 computer 4 chemistry bridge sid cid 1 1 ...