🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

1回答

758閲覧

sqlで副問い合わせのif文がわからない

mb.tata

総合スコア1

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/12/07 23:45

編集2020/12/08 01:14

sql if文の条件分岐
$user_id = '0';
$sql = "SELECT tusr_id FROM tusr_user WHERE tusr_account = ?";
$sql = "SELECT tusr_id FROM tusr_user WHERE tusr_account IN (SELECT tusr_account FROM tdmn_domain WHERE tdmn_add_domain = ?)";
$sth = $this->db_cipher->db->prepare($sql);
$user_id = $this->db_cipher->db->getOne($sql,array($user_account));
if (Ethna::isError($user_id) || $user_id == '0') {
return $result;
}
$result = $this->chkDomainSimpleRule($user_id);
return $result;

} else{ return $result; }

}

3行目のsql文を追加しました。2行目も3行目もtusr_idを取得したく同じ値を返したいんですが別になってしまいます。
if文の記述が足りないんですがわかりますか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/12/07 23:49

「どうしたい」ところが「現状だとどうなる」のでしょうか。もう少し具体的に説明していただけませんか?
maisumakun

2020/12/07 23:51

2行目で$sqlに代入したSQL文は、次の3行目で上書きされてしまっていますが、それは意図した挙動なのでしょうか?
mb.tata

2020/12/07 23:51

現状だとどっちも2を返したいんですが追加したsql文は0が返ってしまいます。
mb.tata

2020/12/07 23:56 編集

2行目で登録されているか確認テーブルから取得し登録されていなかったら3行目のドメインが登録されているかチェックしたいです。
m.ts10806

2020/12/08 01:02

SQLといっても各種あり方言もありバージョンによる機能差もあります。 明示してください。 ただ内容はPHPですよね。SQLだけの話ではないのでタグを整理してください。 また、コードはマークダウンのcodeでご提示ください
Orlofsky

2020/12/08 01:06

ここの掲示板ではMarkdownの使い方を覚えてください。 コードは https://teratail.com/help/question-tips#questionTips3-7 の [コード] に修正してください。 SQLで使っているテーブルのCREATE TABLE文も同じくMarkdownのコードで追記してください。
Orlofsky

2020/12/08 01:06

同じSQLでもデータベースやそのバージョンによって方言が大きいですから、どのデータベースを使うのかを質問のタグで示したり、質問にバージョンも明記した方が適切なコメントが付き易いです。
guest

回答1

0

2行目で登録されているか確認テーブルから取得し登録されていなかったら3行目のドメインが登録されているかチェックしたいです。

でしたら、2行目と3行目のクエリをそれぞれ投げる必要があります。今のコードでは、3行目のSQL文で2行目を上書きしてしまっているため、3行目の方しか実行されません。

投稿2020/12/08 00:31

maisumakun

総合スコア145965

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mb.tata

2020/12/08 00:32

投げるにはどのように追記したらいいですか。
maisumakun

2020/12/08 00:34

2行目と3行目の間に1度目のSQL処理を追加してみてはどうでしょうか?
mb.tata

2020/12/08 00:37

というと。。構文的には。。
maisumakun

2020/12/08 00:39

$sth = $this->db_cipher->db->prepare($sql); $user_id = $this->db_cipher->db->getOne($sql,array($user_account)); このあたりがDBの呼び出し部分だと思われます(環境がわからないので推測ですが)。
mb.tata

2020/12/08 00:41 編集

if文で解決することはできますか?
maisumakun

2020/12/08 00:43

この形で書いてもif文は必要となりますが、そういうことではないのでしょうか? (1回目のSQL実行) if文で条件判定 (条件次第で2回目を実行) という流れになります。
mb.tata

2020/12/08 00:45

if文の記述がわからなくコードを教えてほしいです。
mb.tata

2020/12/08 00:45

そういう認識であっています。
mb.tata

2020/12/08 00:47

この場合の記述コードを詳しく知りたく。。 書いてくれると助かります。
maisumakun

2020/12/08 01:28

データベースもそうですが、PHPのバージョンとフレームワークはどのようなものを使っていますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問