我有以下表架构和数据
CREATE TABLE Customer
(
First_Name char(50),
Last_Name char(50),
Address char(50),
Age int,
City char(50),
Birth_Country char(25),
Live_Country char(25),
Birth_Date datetime
);
insert into Customer (first_name, last_name, address, age, city, Birth_Country, Live_Country, birth_date) values('John', 'Doe', 'Xi-Fu Road', 29, 'Tokyo', 'Japan', 'Japan','1988-11-19') ;
insert into Customer (first_name, last_name, address, age, city, Birth_Country, Live_Country, birth_date) values('Mary', 'Fai', 'Xi-Fu Road', 30,'Tokyo', 'Japan', 'Japan','1987-04-14') ;
insert into Customer (first_name, last_name, address, age, city, Birth_Country, Live_Country, birth_date) values('Tim', 'Potter', 'Gan-xuiu Road', 30, 'NewYork', 'US','Germany', '1987-04-11') ;
insert into Customer (first_name, last_name, address, age, city, Birth_Country, Live_Country, birth_date) values('Lala', 'Hua','Gong-Fu Road', 31, 'Bei-Jing', 'PRC', 'US','1986-12-11') ;
insert into Customer (first_name, last_name, address, age, city, Birth_Country, Live_Country, birth_date) values('Marcia', 'Changhua', 'To-Fu Road', 41 ,'London', 'French', 'Japan','1976-01-04') ;
CREATE TABLE Country_Info
(
ID int,
Country char(50)
);
insert into Country_Info(ID, Country) values(0, 'Japan') ;
insert into Country_Info(ID, Country) values(1, 'US') ;
insert into Country_Info(ID, Country) values(2, 'Germany') ;
insert into Country_Info(ID, Country) values(3, 'PRC') ;
insert into Country_Info(ID, Country) values(4, 'French') ;
我想知道live_country的ID和客户的birth_country。
我使用以下查询
select ID from Country_Info, (select Birth_Country as birth, Live_Country as live from Customer) as tmp_table where
birth = Country_Info.Country ;
查询仅获取客户的birth_country的ID;
但我想获得birth_country和live_country的ID,并显示在两列中。
是否可以一次查询一次?
答案 0 :(得分:0)
您的数据库结构未规范化。 您需要在表客户中存储birth_country和live_country的ID。如果需要,请使用join获取这些国家/地区的名称
答案 1 :(得分:0)
你可以在这个查询中使用连接,在连接条件下,你应该在" on子句"中使用正确的field_names;避免复制,纠正和快速的结果。
select cu.first_name, ci.id as country_id, cu.Birth_Country, cu.Live_Country
from
Country_Info ci
inner join Customer cu
on ci.Country = cu.Birth_Country
在上面的查询中,我在ci.Country = cu.Birth_Country"上有条款",它将显示birth_Country的country_id。如果你想要live_country的id,只需在ci.Country = cu.Live_Country"
上更改条款"答案 2 :(得分:0)
您可以使用<select name="Live_Country" id="Live_Country">
<option value="1">Japan</option>
<option value="2">Germen</option>
</select>
表格以create customer的形式插入 Birth_Country,Live_Country 。
将 Birth_Country,Live_Country 保存为ID而不是名称。 您的Birth_Country,Live_Country如下所示。您可以从Country_Info表中获取值。
//CFDictionarySetValue(sslOptions,kCFStreamSSLLevel,kCFStreamSocketSecurityLevelTLSv1);
我猜您的表格结构错误,将Country_Info表格ID设为自动增量和主键。 如果您遵循此结构,则无需在查询中使用任何加入来检索国家/地区名称,您可以按ID获取国家/地区名称。
答案 3 :(得分:0)
立即使用您的数据,试试这个
SELECT C.first_name,C.last_name,
Birth.ID as Birth_Country_ID,
Live.ID as Live_Country_ID
FROM Customer as C
INNER JOIN Country_Info as Birth ON C.Birth_Country = Birth.Country
INNER JOIN Country_Info as Live ON C.Live_Country = Live.Country
http://sqlfiddle.com/#!9/c4678e/2
然后添加WHERE C.first_name = 'somename'
以查找特定客户。
但我建议你在你的客户表中添加一个auto_increment id。 而不是将国家/地区名称保存在客户表中,而是保存国家/地区的ID。