2013-03-12 91 views
1

我有一个表叫db.datadb.infodb.data表的每个条目都有一个namedateadded列。 info表具有每个名称的namestatus列(状态为n)。 我想从db.data表中获取所有添加到该数据库的名称的数据,但前提是状态(db.status中的状态)为n。从两个表中拉SQL数据

我一直在环顾四周,发现JOIN,但这似乎只适用于两个表中的数据是相同的。在这里,名称是相同的,但我想从db.data中提取数据,但只有在'名称'单元(它在两个表中)的状态设置为'n'

非常感谢advence

+0

有一个共同的两列之间?例如,数据库表可以有一个整数ID,然后信息表将使用该ID来引用数据库表中的正确记录。如果没有,你将不得不依靠名字或其他共同性来关联这两个表。 – 2013-03-12 17:37:35

+0

2个表之间是否存在外键关系?你想加入名称字段还是其他字段? – TabbyCool 2013-03-12 17:37:54

+0

是的,这两个表中都有'Name'列。因此db.data将有10个条目由一个名字组成,例如鲍勃。 db.info会为Bob提供1条关于他的信息,这些信息是y或n状态列中的信息之一。我需要从db.data提供的所有条目,但db.info中的状态字段设置为n – user1563414 2013-03-12 17:42:13

回答

1

我觉得这之间的名字加入是你想要什么:

select d.name, d.dateadded 
    FROM db.info i, db.data d 
    WHERE i.name = d.name 
    AND i.status = 'n'; 
1

据我所知,每个name的数据是对于这两个表都是一样的。因此,一个JOIN应该在这里工作:

SELECT db.data.* 
FROM db.data 
INNER JOIN db.info ON db.data.name = db.info.name 
WHERE db.info.status = 'n' 
+0

当新的答复栏弹出时,我正在键入相同的查询! – TabbyCool 2013-03-12 17:40:27

1

你可以用两个表

SELECT d.name, d.date 
FROM db.data d 
    JOIN db.info i ON d.name = i.name 
WHERE i.status = 'N' 
ORDER BY d.date