
mysqlとperlを勉強中です
2つのテーブルから同じIDの情報を取得したいです。
hoge1テーブルとhoge2テーブルのIDは共通で一致しています。
(実際にはフィールドはもっと多いですがわかりやすくしています)
hoge1テーブルは3つフィールドがあります
ID INT1 INT2
hoge2テーブルは3つフィールドがあります
ID TEXT1 TEXT2
hoge1テーブルで取得するのは数字が一致したIDです
SELECT id FROM hoge1 WHERE int1=10 or int2=10 ORDER BY id
hoge2テーブルで取得したいのはhoge1テーブルで取得したIDのTEXTです。やりたいことはこんな感じです
SELECT TEXT1,TEXT2 FROM hoge2 WHERE id=hoge1テーブルで取得したID ORDER BY id;
while (my $rec = $sth->fetchrow_array) {
push(@recs, $rec);
}
perlでは配列で取得して後で、foreachで100個ほどprintしています。
hoge2も同じように取得したいのですが、hoge2はフォームを空白で送信できるようになっているので値がなにもないときがあります
配列に入れてしまうと空白のレコードがあるとその分、配列がずれてしまいます
hoge1テーブルで取得したIDとhoge2テーブルで取得したテキストのIDを一致させる方法はありますか?
やりたいのはこうゆうことです。
テーブル1で値が一致しているIDを取得する
テーブル2でテーブル1で一致したIDのテキストを取得する
リレーションも考えましたが素人なのでピンときませんでした
テキストのほうも配列で取得して100個ほどprintしたいのです
よろしくお願いします
No.1ベストアンサー
- 回答日時:
いまいち状況がわからないのですが
不通にjoinしたり
SELECT TEXT1,TEXT2 FROM hoge2 inner join hoge1 on hoge1.ID=hoge2.ID and (`INT1`=10 or `INT2`=10);
サブクエリ使ったりしてみては?
SELECT TEXT1,TEXT2 FROM hoge2 WHERE ID in (SELECT ID FROM hoge1 WHERE `INT1`=10 or `INT2`=10)
わかりにくくてすいません
2つのテーブルは登録者の数値と、テキストを分離したテーブルです
よって、カラムの数は一致します。数値を取得したときに、それと同じカラムのテキストを取得しようとしています(テキストに値がない場合も)
テキストを配列に取得する方法ってありますか?(空の値を含めて)
数値とテキストは同じid、左から数えた順序が同じカラムです
perlで表示する時は、こんな感じで使いたいのです。テキストには空の値があります
$hoge1[0]数値 $hoge2[0]テキスト
$hoge1[1]数値 $hoge2[1]テキスト
$hoge1[2]数値 $hoge2[2](テキストに値なしの場合、空白で表示)
$hoge1[3]数値 $hoge2[3]テキスト
No.2
- 回答日時:
select * from hoge2 where id in (select id from hoge1 where int1 = int2);
これでどうでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
MySQLでページ毎にログを取りたい
-
グループ化したテーブルと他の...
-
MySQL UPDATE SETが失敗なのに...
-
エクセルの関数について教えて...
-
SQLサーバから、項目の属性(型...
-
MySQLコマンドライン操作
-
inner joinをすると数がおかし...
-
DEFAULT が設定できないのです
-
複数のカラムの中から最大値を...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
SQLで最大値を検索条件にする場...
-
ストアドのエラーについて
-
SQLにて特定の文字を除いた検索...
-
入力値と外部キーをINSERTするには
-
同一テーブルの同一フィールド...
-
VIEWの元のテーブルのindexって...
-
結合するデータがないとき!?
-
テーブル結合の後に多重ソート
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLにて特定の文字を除いた検索...
-
【Transact-sql】 execの結果を...
-
マイクラPC版のコマンドで効率...
-
SQL Left Join で重複を排除す...
-
sqlで、600行あるテーブルを100...
-
複数テーブルのGROUP BY の使い...
-
WordpressのContact form 7でzi...
-
クエリ表示と、ADOで抽出したレ...
-
SQLサーバから、項目の属性(型...
-
selectした大量データをinsert...
-
Access パラメータクエリをcsv...
-
副問合せの書き方について
-
inner joinをすると数がおかし...
-
insertを高速化させたい
-
[MySQL] 3つのテーブルの結合で...
おすすめ情報