

いつもお世話になっています。
本日の午前中までに作成しないとならないのですが、下記の動作がわかりません。
お分かりになる方がいましたらどうか教えていただけないでしょうか!
環境:SQL2000
windowsXP
【条件】
・Aテーブルの番号列は全て”0”とする
・Aテーブルの1つの郵便番号が複数の住所をもつ→”0”のまま
・Aテーブルの1つの住所が複数の郵便番号をもつ→番号列を”1”とする。
●Aテーブル
ID | 名前 | 郵便番号 | 住所 | 番号
-----------------------------------------------------------------------------
01 | 小林 | 101-1000 | 東京都 | 0
02 | 鈴木 | 102-1000 | 東京都 | 0
03 | 鈴木 | 103-1000 | 茨城県 | 0
04 | 町田 | 105-1000 | 神奈川県 | 0
05 | 木村 | 105-1000 | 群馬県 | 0
↓出したい結果↓
ID | 名前 | 郵便番号 | 住所 | 番号
-----------------------------------------------------------------------------
01 | 小林 | 101-1000 | 東京都 | 1
02 | 鈴木 | 102-1000 | 東京都 | 1
03 | 鈴木 | 103-1000 | 茨城県 | 0
04 | 町田 | 105-1000 | 神奈川県 | 0
05 | 木村 | 105-1000 | 群馬県 | 0
以上になります。どうぞよろしくお願いします!
No.3ベストアンサー
- 回答日時:
#1,#2です。
テーブルの別名をうまく使わないと、JOINの多いクエリは複雑になるので、混乱するんだと思います。
今回はどうせ別名は必須なので、全部のテーブルを別名を使って書けばよいと思います。
SELECT
--表示するデータ
・・・
・・・
・・・
FROM Aテーブル a
LEFT OUTER JOIN Bテーブル b ON a.○○ = b.○○
LEFT OUTER JOIN Cテーブル c ON a.△△ = c.△△
INNER JOIN
(SELECT 住所,COUNT(DISTINCT 郵便番号) CNT
FROM Aテーブル
GROUP BY 住所) d ON a.住所=d.住所
WHERE a.■■='1'
ORDER BY a.◎◎
jamshid6様
お礼が遅くなり申し訳ございません!
教えていただいたとおりにやったら、見事できました!
ありがとうございました!
No.2
- 回答日時:
#1です。
>SELECT文ではなく、Aテーブルを更新するという意味で、UPDATEを使用することも可能でしょうか。
その場合は、1に更新したいもの(=Aテーブルの1つの住所が複数の郵便番号をもつ)だけを対象とすればよいので、私ならばこうします。
UPDATE Aテーブル
SET 番号=1
WHERE 住所 IN
(SELECT 住所 FROM #WK
GROUP BY 住所
HAVING COUNT(DISTINCT 郵便番号)>1)
いつもありがとうございます。
UPDATEについてはまだ未確認の為、改めてご報告したいと思います。
SELECT文の方なのですが、
教えていただいたほかに2箇所LEFT OUTER JOINもしている為、とても複雑になってしまい、どうしてもエラーがでてしまいます。
2箇所LEFT OUTER JOINの後に、今回教えていただいたSELECT文を挿入する方法を教えて頂けると大変助かります!
SELECT
--表示するデータ
・・・
・・・
・・・
FROM
(Aテーブル(重複件数を抽出をするAテーブルと同じ)
LEFT OUTER JOIN
Bテーブル(他テーブル)
ON
Aテーブル.○○ = Bテーブル.○○)
LEFT OUTER JOIN
Cテーブル(他テーブル)
ON
Aテーブル.△△ = Cテーブル.△△
WHERE
Aテーブル.■■='1'
ORDER BY
Aテーブル.◎◎
以上になります。教えていただけると大変助かります。よろしく御願いします。
No.1
- 回答日時:
これでどうですか?
SELECT
a.ID,a.名前,a.郵便番号,a.住所,
CASE WHEN b.CNT>1 THEN 1 ELSE 0 END 番号
FROM Aテーブル a
INNER JOIN
(SELECT 住所,COUNT(DISTINCT 郵便番号) CNT
FROM Aテーブル
GROUP BY 住所) b ON b.住所=a.住所
ORDER BY a.ID
この回答への補足
SELECT文ではなく、
Aテーブルを更新するという意味で、
UPDATEを使用することも可能でしょうか。
こちらも教えていただけると助かります!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「テーブルに座って……」という...
-
オーダーの覚え方について
-
Excelのテーブルでmatch関数の...
-
特定物と不代替物の違い
-
男性と2人で飲食店に行きテーブ...
-
コンボボックスにレコードセッ...
-
テーブル名の前のドットの意味
-
ACCESS 社内ネットワークで、テ...
-
時給の変更に対応する方法
-
【エクセル】データテーブルの...
-
SQLの作り方
-
SQLです!!教えてください。あ...
-
複数テーブルが絡む複雑なUPDAT...
-
SQLのSELECT結果を縦...
-
別テーブルにIDが存在しないレ...
-
面接のときテーブルが正面に。...
-
会社の飲み会の幹事になり、座...
-
人の前を通る場合について
-
【MySQL】1対1でテーブルをあ...
-
下記、問題に対しての解答が以...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「テーブルに座って……」という...
-
会社の飲み会の幹事になり、座...
-
外部キーだけのテーブル(主キ...
-
テーブルリンク リンク元を知...
-
オーダーの覚え方について
-
下記、問題に対しての解答が以...
-
飲み会で、座敷orテーブルどち...
-
アクセスのリンクテーブル一覧...
-
【エクセル】データテーブルの...
-
L2SWはARPテーブルを持っている?
-
面接のときテーブルが正面に。...
-
男性と2人で飲食店に行きテーブ...
-
UTF8のテーブルをODBCドライバ...
-
お金持ちのテーブル
-
1つのテーブルに同じデータを参...
-
テーブル名の前のドットの意味
-
複雑なSQL文について
-
データベースの接続に失敗して...
-
【PHP】SQL文のSUM関数で出力し...
-
更新されたテーブルを表示したい
おすすめ情報