2012-07-08 70 views
-1

嗨,我必須寫一個MySQL查詢我會解釋查詢如何工作。mysql從多個表中提取數據與一對多的外鍵參考

我有兩個表

CREATE TABLE IF NOT EXISTS A

field1 INT(10)NOT NULL AUTO_INCREMENT,

field2 INT(10)NOT NULL ,

field3 INT(10)NOT NULL,

field4 VARCHAR(255)DEFAULT NULL,

fields5 INT(10)NOT NULL,

field6 VARCHAR(255)NOT NULL,

field7 VARCHAR (255)NOT NULL,

field8 INT(10)NOT NULL,

field9 TINYINT(1)NOT NULL COMMENT '1 =已啓用資源0 = 禁用資源',

PRIMARY KEY(field1);

表乙

CREATE TABLE IF NOT EXISTS `estimate_resource_mth` (

    `field1` int(10) NOT NULL AUTO_INCREMENT, 

    `field2` int(10) NOT NULL, 

    `field3` int(10) NOT NULL, 

    `field4` int(10) NOT NULL, 

    PRIMARY KEY (`field1`) ; 

有一個從tableAtableB許多參考是A.field1多個參照B.table2。現在我將解釋我需要得到什麼,我有一個id從表A獲取數據使用where條件我需要返回此列表與表中的filed4的總和(tableB中的field2引用tableA,它可能是一個multple排一到多關)。我怎麼能在一個查詢中得到這個數據?

回答

1

您的描述很差,您的通用列名稱不是很有幫助,但是如果我明白,tableB.field2參考tableA.field1。在這種情況下,上的SUM()合計LEFT JOIN將完成這項工作。

SELECT 
    tableA.field1, 
    SUM(tableB.field4) AS the_sum 
FROM 
    tableA 
    LEFT JOIN tableB ON tableA.field1 = tableB.field2 
WHERE 
    /* IN() for multiple possible vals. Use = if only 1 val needed 
    and then the GROUP BY is unnecessary */ 
    tableA.field1 IN ('val1','val2',val3') 
GROUP BY tableA.field1 
+0

好吧,它的工作感謝.. – user359187 2012-07-08 15:35:11