1

データベースに 2 つのテーブルがあります。それぞれに、自動生成された数値である識別子、テキスト フィールド、および整数フィールドの 3 つがあります。テキスト フィールド ( と呼びましょうNames) のデータは、両方のテーブルでまったく同じです。数値フィールドのみが異なります。数値フィールドの 2 つのセットを比較し、どちらのテーブルでも数値がゼロでないすべての名前をリストするステートメントが必要です。また、フィールドで 2 つの数値を加算し、結合された値で別の列を作成し、その値の順序で最大値から最小値まで名前をリストする必要があります。

これは私が得た限りであり、今は立ち往生しています。私はSQLに非常に慣れていません

SELECT tableone.names
FROM tableone, tabletwo
WHERE (tableone.numbers > 0) AND (tabletwo.numbers > 0)
4

1 に答える 1

1
SELECT
 tableone.names,
 tableone.numbers + tabletwo.numbers AS numbers_sum
FROM tableone
LEFT JOIN tabletwo USING (names)
WHERE (tableone.numbers > 0)
 AND (tabletwo.numbers > 0)
ORDER BY 2 DESC

更新、テスト済みのSQL:

USE test;

CREATE TABLE IF NOT EXISTS tableone (
  names TINYTEXT NOT NULL,
  numbers INT NOT NULL,
  PRIMARY KEY (names(100))
);

CREATE TABLE IF NOT EXISTS tabletwo (
  names TINYTEXT NOT NULL,
  numbers INT NOT NULL,
  PRIMARY KEY (names(100))
);

INSERT INTO tableone SELECT 'a', RAND();
INSERT INTO tableone SELECT 'b', RAND();
INSERT INTO tableone SELECT 'c', RAND();
INSERT INTO tableone SELECT 'd', RAND();
INSERT INTO tabletwo SELECT names, RAND() FROM tableone;

SELECT
 tableone.names,
 tableone.numbers + tabletwo.numbers AS numbers_sum
FROM tableone
LEFT JOIN tabletwo USING (names)
WHERE (tableone.numbers > 0)
 AND (tabletwo.numbers > 0)
ORDER BY 2 DESC;

出力:

+-------+-------------+
| names | numbers_sum |
+-------+-------------+
| b     |           2 |
| d     |           2 |
+-------+-------------+
于 2013-05-31T21:17:42.327 に答える