2016-06-11 42 views
1

通常我们使用表和模式进行查询,但在我的情况下,我只能使用实体关系图在MYSQL格式的一张纸上查询。仅使用实体关系图查询MYSQL格式[BRAIN CHALLENGE]

这些确实使事情变得复杂。我需要你的帮助,例如这个问题。

问题:

NOTE:

+1

我不会解决你的问题吗?在上图中已经提供了有关表格定义及其关系的信息。你不明白? – Alex

+0

@Alex我知道,但我们必须通过做出假设来使用主键和外键使用这些关系进行查询。不幸的是我很难挣扎如何连接这些表。刚刚阅读这个问题。谢谢 – Zeus

+2

首先,我在发表评论前已经全部阅读了这个问题。回答您的评论:唯一的假设问题是要求您提供有关FK列名的信息,例如Wine_Maker.winemaker_id在葡萄酒中会有一个匹配的列。你必须自己拿出专栏的名字。 – Alex

回答

1

基于上述INNER JOIN S上的数据将被写成这样:

SELECT * 
FROM Wines 
    INNER JOIN Carry ON Wines.wine_id = Carry.wine_id 

请注意,葡萄酒和龋齿之间的图表关系显示0到很多(1..1 - 0 .. *)。另请注意,wine_id未列入进位表列列表中,但隐含在关系中。

接下来,你要知道价格今天(提示:由于表进表有price_start_dateprice_end_date它意味着价格不是固定的,你需要使用这些字段):

WHERE price_start_date <= CURDATE() AND CURDATE() <= price_end_date 

下面来获得价格$ 15:

WHERE price_start_date <= CURDATE() AND CURDATE() <= price_end_date 
    AND price_on_carry < 15 

问题1查询会像下面(你将需要添加相应的列名):

SELECT * 
FROM Wines 
    INNER JOIN Carry ON Wines.wine_id = Carry.wine_id 
WHERE price_start_date <= CURDATE() AND CURDATE() <= price_end_date 
    AND price_on_carry < 15 
    AND Wines.color = 'Red' 

注意:英语不是我的第一语言,所以我对“他们是否来自加拿大”感到困惑,特别是如果我们需要提供有关加拿大葡萄酒是否来自加拿大的信息。我认为我们不需要包含这些信息。

+0

这个问题提到了一个记录集,你没有提供它。 – Alex

+0

这是虚构的数据,这就是为什么我没有提供它。 感谢它,但对于那个加拿大我想我们需要与那个国家表格连接一些如何,但是哪些Keys?在这里,我坚持 – Zeus

+0

对于来自加拿大的葡萄酒,您需要将来自各国的表格一直加入库里(请注意,它要求您按价格排序)。使用括号中名称旁边的PK列,例如ctry_code。 PK代表PRIMARY KEY。 – Alex