-1

こんにちは私はmysqlクエリを書かなければなりません私は私がどのように働きたいかクエリを説明します。

私は2つのテーブルを持っています

A

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=for enabled resource 0= for
disabled resource',
  PRIMARY KEY (`field1`);

表B

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`) ;

からの1対多の参照がありtableAtableBそれはA.field1への複数の参照B.table2です。今、私は何を取得する必要があるかを説明します、私はテーブルB(テーブルBのフィールド2はテーブルAを参照し、それは複数の行である可能性があります)Aの合計でこのリストを返す必要がある条件を使用してテーブルからデータをフェッチするIDを持っていますfiled4多くの関係に)。単一のクエリでこのデータを取得するにはどうすればよいですか。

4

1 に答える 1

1

あなたの説明は貧弱で、一般的な列名はあまり役に立ちませんが、理解できれば、tableB.field2参照tableA.field1. その場合、LEFT JOIN集計SUM()をオンtableB.field4にした がその仕事をします。

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
于 2012-07-08T12:19:52.823 に答える