2016-06-11 44 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