同じ列が存在する2つのテーブルがあります。
その2つのテーブルの同じ列同士を突き合わせ、
同じ条件の値を表示したいのですが、
SQL文で可能なのでしょうか?


例:
条件としてテーブル1、テーブル2の列Aが3以下の数字すべて

テーブル1
列A

1
1
2
3
4
5

テーブル2
列A

1
2
2
3
3
3
3
4
4
5

ほしい結果
A|A
――
1|1
1|
2|2
 |2
3|3
 |3
 |3
 |3

不躾な質問で恐縮ですが、
アドバイスお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

SQL Server 2005以降ならば、以下の通りです。


SELECT
t1.A,t2.A
FROM
(SELECT
ROW_NUMBER() OVER (PARTITION BY A ORDER BY A) SEQ,*
FROM テーブル1
WHERE A<=3) t1
FULL OUTER JOIN
(SELECT
ROW_NUMBER() OVER (PARTITION BY A ORDER BY A) SEQ,*
FROM テーブル2
WHERE A<=3) t2 ON t2.A=t1.A AND t2.SEQ=t1.SEQ
    • good
    • 0
この回答へのお礼

早速のアドバイスありがとうございます。
FULL OUTER JOIN
と言うものがあるんですね。
勉強になりました。
有難うございました。

お礼日時:2009/05/27 21:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテーブル構造を支える脚の材料と太さの計算方法

テーブル構造を支える脚の材料と太さの計算方法

こんにちは。テーブル構造を支える脚の材料と太さの計算方法と材料を教えて頂きたいです。

条件は:
条件1中央の脚一本でテーブル板を支える
条件2テーブル板の重量は決定済み、M=6kg
条件3脚の下の固定は別途設計するので、倒れることは考えなくても良い
条件4脚とテーブル板の固定は別途設計するので、倒れることは考えなくても良い
条件5テーブルは携帯式なので、脚を出来るだけ細くできればよい
と考えています。

質問1十分な強度を得られ、しかも軽量な材質は何でしょうか?
質問2そのときの脚の太さの計算方法は?

条件3と4で述べたとおり固定方法も考える必要もあるのですが、とりあえず脚が決まってからの方が良いと思いましたので、質問させていただいている次第です。

ご教授ありがとうございます。

Aベストアンサー

計算式
(耐荷重+固定荷重)÷木材の許容圧縮応力度÷脚本数=必要断面積(cm2)
上記計算式でテーブル脚をルート断面積で正方形の脚の寸法が求められます。
耐荷重とは、貴方がテーブルに上げる最大重量です。(kg又はN)
木材の許容圧縮応力度は、材料強度です。
建築基準法同施行令に参考になる材料強度表が書かれています。
材種を決めて計算する事が大事です。
ご参考まで

Q1つのテーブル・2つの列を結合して1つの検索結果に

あるテーブルAがあり、そこにINT型の列bと列cがあるとします。

|b|c|
|1|2|
|1|3|

とデータが格納されているとき、ここから[1,2,3]という風に、重複のない結合結果を出すにはどういったSQLを書けば良いでしょうか。

2列だとDISTINCTも使えず、簡単そうなのに自分ではできませんでした。出力後に結合するのでは色々と不都合なことがあったため、この出力が一発で出せれば便利だと思い質問させていただきました。ご回答よろしくお願いいたします。

Aベストアンサー

select distinct * from (
select b as X from table_A
union
select c as X from table_A
) as table_B

こんな感じ?
ちなみに、SQL Server 2008R2 で動作確認しています。

QDIYテーブルの折りたたみ脚について

天版を蝶番で付けて真ん中を繰り抜き、七輪テーブルを作成しました。
現状は、余っているキャンプ用テーブルの脚をガムテープで固定しています。
ユニフレームの焚き火テーブルと同じ高さの折りたたみ脚を付けたいと思ってますが良いアイデアもしくは脚の販売先はありますでしょうか?
焚き火テーブルの高さは37cm、七輪テーブルの天版の厚さは約1.5cmなので、最低でも35cmの脚が必要になるかと思います。30cmの脚は結構見かけるのですが・・・。

Aベストアンサー

市販品にこだわらず、木などで作れば高さ自由ですよ。

1)別板を2枚クロスさせて天板を置く
2)蝶番つけて折りたたみ足にする
3)ナット埋めてねじ込みにする
4)テーブルを箱型にして、七輪+火種のケースとしてもそのまま使う

↑これらは高さの微調整にはアジャスタフットなりが必要ですが、
こういうの↓はアジャスタ機能もってますね

5)パイプの入れ子構造にして、内パイプは外パイプとねじ止めする。
 または外側の先端に割りをいれておいてクランプやホースバンドなどで締めて内パイプを固定する
6)天板の下にハの字形に広がるように左右脚をつけて、間をロープでつないで開き具合を調節する


ま、私なら4か6にしますね。
6のみ、簡単に絵にしておきます。

Q1つのテーブルに同じデータを参照する複数の列がある場合…

うまく説明できないのですが、

テーブル1   テーブル2
No|名前    ID|午前担当|午後担当
――――  ――――――――――
01|Aさん   01|     1|     2
02|Bさん   02|     3|     4
03|Cさん   03|     5|     1
04|Dさん   04|     2|     3
05|Eさん   05|     4|     5

上の2つのテーブルを結合させて、

結合後テーブル
No|午前担当|午後担当
――――――――――
01|  Aさん|  Bさん
02|  Cさん|  Dさん
03|  Eさん|  Aさん
04|  Bさん|  Cさん
05|  Dさん|  Eさん

上のように表示させたいのですが、
どのように結合したらよいのでしょうか?

どうぞ、ご教授よろしくお願いしますm(_ _)m

Aベストアンサー

>どのように結合したらよいのでしょうか?
テーブル2に対してテーブル1を2つ結合させれば出来ます。
下記ではテーブル1を2回結合させるためテーブル1とテーブル1_1として結合させています。

SELECT テーブル2.ID, (テーブル1.名前) AS 午前担当, (テーブル1_1.名前) AS 午後担当
FROM (テーブル2 LEFT JOIN テーブル1 ON テーブル2.午前担当 = テーブル1.[No]) LEFT JOIN テーブル1 AS テーブル1_1 ON テーブル2.午後担当 = テーブル1_1.[No]
ORDER BY テーブル2.ID;

INNER JOINを使うとテーブル2の午前・午後担当フィールドにNullがあった場合表示されないのでLEFT JOINとしてNullの場合も表示させるよう対応しています。
Nullは絶対ないという場合ならLEFT JOINをINNER JOINとしても大丈夫です。
これで出来ます。

Qテーブルの脚を取り換えたい

ローテーブルの脚を取り換えて、脚の長いダイニングテーブルにしたいです。
幕板付きなので幕板はそのままで、脚だけを取り換えようと思ってます。

テーブルの画像を添付しました。
左画像はテーブルの正面から右側の脚にかけて、右画像は同じ部分をテーブル裏側から撮影してます。

1本の脚付近には、3本のネジがあります。
そのうち2本(銀色のネジ)は、幕板を天板にとりつける為のものだと思います。
あとの1本が脚と幕板を固定してるものだと思います。

このテーブルを組み立てた時の様子は忘れたのですが
ホゾ(?)みたいに凹凸で組まれていてネジは補強なのだと思います。
でも私にはそんな技術はありませんので
ネジで幕板と脚を固定するつもりです。

幕板は飾りとして
脚と天板の接する部分にそれぞれ金物をつけて取り付ける。

これで大丈夫でしょうか?
結構な重量のあるテーブルですので
高さのある脚にした時の強度が心配です。
他に何かよい方法はありますか?

また、家具のリメイクをしてるお店に頼む場合、
今ある幕板の凹凸に合わせて脚をつくってもらってホゾ組にしてもらうとしたら
どれくらいの値段がするのでしょう?
1万円で済むなら頼んだ方が良いと思ってますが
そんなお安くないですよね?
運送費だけでも相当な事になりそうで、現実的ではない気はしてるのですが・・・

ローテーブルの脚を取り換えて、脚の長いダイニングテーブルにしたいです。
幕板付きなので幕板はそのままで、脚だけを取り換えようと思ってます。

テーブルの画像を添付しました。
左画像はテーブルの正面から右側の脚にかけて、右画像は同じ部分をテーブル裏側から撮影してます。

1本の脚付近には、3本のネジがあります。
そのうち2本(銀色のネジ)は、幕板を天板にとりつける為のものだと思います。
あとの1本が脚と幕板を固定してるものだと思います。

このテーブルを組み立てた時の様子は忘れたので...続きを読む

Aベストアンサー

プロに依頼は 費用的に 全く無理ですから

ご自身で ホ-ムセンタ-で角脚も 丸い脚も

座金も 販売されていますので

取り付けられれば 1万で済むでしょう。

写真の幕板は無視することに成ります。

幕板を利用して脚を固定する方法は 様々ありますが

隅木 又は 隅金具でボルト締めが簡単です。

プロに依頼は其れなりの費用が掛かります。

Q同じテーブルの内容を異なる列として表示する方法

テーブル名:tabl_1

index | comm
-------------------
001  | テスト1
002  | テスト2
003  | テスト3
004  | テスト4
005  | テスト5


というようなテーブル(tabl_1)があり、これをSQLで取得した時に、


index | comm
----------------------------------
001  | テスト1
002  | テスト2
002  | テスト2
002  | テスト2

といった結果で取得することは可能でしょうか?

簡単なsqlで書きますと

select index, comm from tabl_1
where index in ('001','002','002','002')

といった場合に上記の様な結果を取得したいです。
色々と試したのですが、初心者で希望する結果を出せませんでしたので
教えてください。

Aベストアンサー

理論上無理がありますがどうしてもやるなら回数分の
UNION ALLを発行してください

Q無垢テーブル固定のねじが使用半年で折れ落ちたり、脚がとれたりするものですか?

無垢のダイニングテーブルを半年前に購入しました。素材はナラだったと思います。3日前にいすの上に折れたねじがあり、よく見るとテーブルのねじが折れて落ちたものでした。購入店に連絡すると、このようにねじが折れ落ちることはよくあるといわれました。修理にこられ、折れた場所の斜めにねじ固定されました。よく見るとほかのねじも数本抜けていました。修理のときにテーブルの脚も緩んでいたのでしめてもらいましたが、翌日テーブルと脚に隙間がある事に気づき再度締めようとしたら脚がとれました。再度修理してもらいましたが、このように半年でねじが折れたり、ぬけおちたり、脚が取れたりするものでしょうか?

Aベストアンサー

購入から半年では ねじが折れ落ちることは通常ありません。

よくあるなんていうのは 言い逃れです。

欠陥品ですね。商品の取替え交渉です。

Qテーブル列数とデータファイル列数の違うbcpインサートをしたい

DBのテーブルの列数は258です。
インサートするデータファイルの列数は65です。
データファイルは","で区切られたファイルです。
SQL Serverは2005です。

コマンドを下記のように書きました。
SQLCMD -S"\SQLEXPRESS" -U"user" -P"pass" -d"計測" -Q"INSERT INTO [計測データ] SELECT 4,CONVERT(datetime,年月),データ1,データ2,データ3,データ4,データ5,・・・データ256 FROM OPENROWSET(BULK 'D:\200906.csv', FORMATFILE='D:\test.fmt',FIRSTROW = 2) x"

フォーマットファイルは、
8.0
68
1SQLCHAR01""0 Firsrt_QUOTE ""
2SQLCHAR020"\","1年月 ""
3SQLCHAR010","2データ1 ""
4SQLCHAR010","3データ2 ""
5SQLCHAR010","4データ3 ""
・・・
66SQLCHAR010"\r\n"65データ64 ""

しかしエラーになってしまいます。
そもそも列数が違うと無理なのでしょうか。

DBのテーブルの列数は258です。
インサートするデータファイルの列数は65です。
データファイルは","で区切られたファイルです。
SQL Serverは2005です。

コマンドを下記のように書きました。
SQLCMD -S"\SQLEXPRESS" -U"user" -P"pass" -d"計測" -Q"INSERT INTO [計測データ] SELECT 4,CONVERT(datetime,年月),データ1,データ2,データ3,データ4,データ5,・・・データ256 FROM OPENROWSET(BULK 'D:\200906.csv', FORMATFILE='D:\test.fmt',FIRSTROW = 2) x"

フォーマットファイルは、
8.0
68
1SQ...続きを読む

Aベストアンサー

bcpとsqlcmdによるOPENROWSETの実行は別物です。
同じようなことはできますが、まずは区別して認識しましょう。

OPENROWSETは、ファイルをテーブルに見立ててSELECTする方法です。
だから書いているクエリも"INSERT INTO ~ SELECT ~"です。
列数の少ないテーブルAから列数の多いテーブルBにINSERTするとき、どうしていますか?

INSERT INTO テーブルA
(列1,列2,列3,...,列10)
SELECT 列1,列2,列3,....,列10 FROM テーブルB

って書きますよね?
やっているのは全く同じことです。

Qテーブルの別売りの脚について

もうじき引っ越す予定です。
現在は脚の短いテーブルで座布団での生活ですが、
新しい場所がフローリングのLDKのためダイニング
のセット(椅子とテーブル)にしようかな、と
考えました。

しかし、現在のテーブルも捨てがたく、できれば
このテーブルの脚だけ長いものに交換できないか
と考えています。(脚にはネジが、テーブルには
ネジ穴があるタイプです。)

どこかで、テーブルの脚を別売りしてくれるお店
などありませんでしょうか?

ネットでもリアルでもかまいませんが、リアルの
場合、首都圏で紹介していただけると助かります。

よろしくお願いします。

Aベストアンサー

東急ハンズ渋谷店、
http://shibuya.tokyu-hands.co.jp/guideonfloor_back.html

4Aの家具 組立家具で各種取り揃えていますよ。

Q同じテーブルの内容を異なる列として表示する方法

index | id  | param
-------------------
001  | 1  | 犬
001  | 2  | 猫
002  | 1  | 猿
003  | 1  | 雉
003  | 2  | 馬

というようなテーブルがあり、これをSQLで取得した時に、

index | param(id=1) | param(id=2)
----------------------------------
001  | 犬     |  猫
002  | 猿      |
003  | 雉     |  馬

といった結果で取得することは可能でしょうか?

・結果では必ずindexは重複させない。
・idは必ず1か2、もしくはid=2がない。

joinやunionなど試してみましたが、書き方が悪いのか求める結果が得られませんでした。

ご教授いただければと思います。

Aベストアンサー

こんな感じでどうぞ。MAXはSUMなどに置き換えれば他のケースでも応用がききます。

SELECT
[INDEX],
MAX(CASE WHEN ID=1 THEN PARAM END),
MAX(CASE WHEN ID=2 THEN PARAM END)
FROM tbl1
GROUP BY [INDEX]


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報