質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

931閲覧

レコードの項目全て重複した行がない場合はINSERT。全て重複した行がある場合はカウントを+1してUPDATE

moriyama_tosimi

総合スコア22

SQL

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/06/12 01:14

編集2020/06/12 01:58

php sqlでの質問です。
レコードがなければ、新たにレコードを新規で作り、あればカウントを増やす。事をしたいのですがやり方がいまいちわからないので、教えてください。

例えば-

$sql = "SELECT * FROM テーブル名 WHERE `項目1` LIKE \'検索するデータ1\' AND `項目2` LIKE \'検索するデータ2\' AND `項目3` LIKE \'検索するデータ3\' AND `項目4` LIKE \'検索するデータ4\'";

レコードの項目すべての一致すれば、カウントを+1。一致しなければ、新たにレコードを検索したデータで作りたいのです。
*ON DUPLICATE KEY UPDATEでは、レコード全部ができないみたいです。
レコード全部一致で、できるコマンドなどありますか?
初心者なので、初歩的質問で申し上げございません。

SELECT * FROM `dbc` WHERE `Title` LIKE 'タイトル' AND `categories` LIKE 'カテゴリー' AND `name` LIKE '日本' AND `image` LIKE 'test.gif'

カウント用項目はkaunt

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

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

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

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

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

Orlofsky

2020/06/12 01:25

SQLで使われるテーブルはCREATE TABLEされている必要があります。SELECTされるデータもINSERTされている必要があります。質問にCREATE TABLEとINSERTで1件で良いからデータを https://teratail.com/help/question-tips#questionTips3-7 の [コード] で提示してもらえると実際にSQLを実行できるので適切なコメントが付き易いです。
moriyama_tosimi

2020/06/12 01:41

申し上げございませんでした。 データベースバージョンは、5.6 使う予定のデータベースは、ロリポップのデータベースです。 コードは、もう少し時間がかかりそうです。すみません。
sazi

2020/06/12 01:56

ロリポップはサービスの名前です。そこで使用するDBMSを明示して下さい。
moriyama_tosimi

2020/06/12 02:00

すみません。〈DBMS〉って何ですか?
sazi

2020/06/12 02:11

DBMS=データベース管理システムです。 MySQLとかPostgres, MariaDBなどが該当します
moriyama_tosimi

2020/06/12 02:33

探しましたが、分かりませんでした。
sazi

2020/06/12 02:59 編集

分からないで、SQL記述しているはずはないですよね。 「ON DUPLICATE KEY UPDATE」はDBMS固有の表現で、MySQL系列なんですけど、MariaDBかもしれないのです。
guest

回答1

0

ベストアンサー

普通にunique属性とon duplocateでいけそうですけどね

投稿2020/06/12 02:16

yambejp

総合スコア114779

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

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

yambejp

2020/06/12 02:21 編集

create table tbl(id int primary key auto_increment, count int not null default 0, v1 int not null, v2 int not null, v3 int not null, unique v_123(v1,v2,v3)); insert into tbl(v1,v2,v3) values (1,1,1),(1,2,3),(2,2,2); ここから重複するとカウントアップ、しなければ追加 insert into tbl(v1,v2,v3) values (1,2,3),(3,3,3) on duplicate key update count=count+1
moriyama_tosimi

2020/06/12 02:38

ユニーク制約 (UNIQUE制約)を調べましたが、同じデータは記載されないって感じでした。 同じデータ行は、カウントして行きたいのです。 私の認識不足でしたら、申し上げございません。
moriyama_tosimi

2020/06/12 02:42

回答が入れ違いになってしまいました。リストを試させていただきます。とりあえず、先ほどのコメントは、無視してください。
moriyama_tosimi

2020/06/18 03:48

返事が、遅くなってしまい申し上げございません。せっかくのアドバイス、いまだ解読できていません。まだ、レベルが足りないようです。 ベストアンサーにしたいのですが、納得するまで、解読を頑張ります。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問