2つの列に基づく重複キーについて

ソリン・グレク

私は自分のJavaアプリに少し問題があります、私は十分に知らないか、これは簡単な方法では不可能です。私は初心者なので、それが最初のオプションであることを願っています。

これは私のテーブルです:

CREATE TABLE IF NOT EXISTS `evolution` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `product` varchar(50) NOT NULL,
 `quantity` double NOT NULL,
 `date` date NOT NULL,
 `operator` varchar(50) NOT NULL,
 PRIMARY KEY (`id`)
) 

いくつかの製品の売上を日付ごとに追跡したいと思います。

オペレータは、今日入ると言うことができます:私は何を達成したいことは、これは17.01.2014製品のbanana数量と4彼が挿入されます、その日.Laterapples量で10【選択同じ日には、彼が挿入されますbanana量と1し、apples数量で12

明日、彼は同じことを行い、bananas数量を2日付に挿入ます18.01.2014。これは、同じ製品であるが日付が異なるため、新しい行にあるはずです。

この状況では、データベースで次のことを行う必要がありますbananaに挿入されているかどうか確認します。挿入されて17.01.2014いない場合、数量を入力し0+4ます。17.01.2014更新時にバナナがすでに挿入されている場合は、数量更新し4+1ます。

翌日、挿入bananaされたかどうかを確認します18.01.2014挿入されていない場合、数量を挿入します挿入されている場合2、数量を更新します。

つまり、日付は同じでapplesあり、同じである可能性があるため、列を一意にすることはできませんbanana。もちろん、数量も同じです。

どうすればこれを達成できますか?私はいくつかの方法を考えましたが、それはあまり効率的ではありません:

  1. Select (product,date) from evolution where product=banana AND date=18.01.2014これが何かを返す場合、私は更新を実行します。これで何も返されない場合は、挿入を実行します。

  2. product-date一意の列を作成しますその中に例えば挿入しますbanana 17.01.2014。これは簡単でしょうが、私はこの方法が好きではありません、それは汚いです。

重複キーに対してダブルのようなことを行うことができれば、これはすべてとても簡単です。試して挿入しbanana and dateます。次に、組み合わせがすでに存在する場合は、更新を行います。

短くて理解しやすくするには:

これは有効です:

+-------+----------+
|product|date      |
+-------+----------+
|banana |17.01.2014|
+-------+----------+
|banana |18.01.2014|
+-------+----------+
|apples |17.01.2014|
+-------+----------+
|apples |18.01.2014|
+-------+----------+

これは無効です:

+-------+----------+
|product|date      |
+-------+----------+
|banana |17.01.2014|
+-------+----------+
|banana |17.01 2014|
+-------+----------+
|banana |18.01.2014|
+-------+----------+
|banana |18.01.2014|
+-------+----------+

したがって、それら(productおよびdate)は、単独では重複できますが、一緒にはできません。

長い投稿で申し訳ありません...私はこれを行うための簡単でクリーンな方法を見逃していないことを願っていますが、私はプログラミングの初心者です。ありがとう、おやすみなさい!

ブラッド

製品と日付に複合キーが必要なようです。

PRIMARY KEY (product, date)

複合主キーは、基本的に、複数のキーを使用してモノの一意性を判断する方法です。たとえば、青または赤のハンマーと釘のみを販売している店舗がある場合、データベース内でハンマーまたは青として識別できなかったため、両方を使用する必要があります

tool  |  color |  quantity
hammer   blue     4
hammer   red      3 
nail     blue     1 
nail     red      6

ここでのPKはツールと色になります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの列に基づいて重複レコードを検索する

分類Dev

2つの列に基づくサブセットの重複

分類Dev

2つの列に基づいて新しい重複値を削除する.NETCore

分類Dev

rの2つの列に基づいて重複を選択します

分類Dev

2つの列の条件に基づいて重複を削除します

分類Dev

Rの2つの列に基づいて重複を削除する

分類Dev

OracleSQL-2つの列に基づいて重複を選択します

分類Dev

2 つの列の値に基づいてデータフレーム pandas の重複を削除します

分類Dev

最初の2つの列の値に基づいて、htmlテーブルの重複を確認します

分類Dev

特定のExcelシートの2つの列に基づいて重複を削除する

分類Dev

MySqlの2つの列に基づいて重複レコードを削除します

分類Dev

他のいくつかの列に基づいて重複を探しています

分類Dev

1つだけでなく2つの条件に基づいて他の列から重複を削除するにはどうすればよいですか?

分類Dev

PHPで2つのキーと値の組み合わせに基づいて配列から重複データを削除する方法

分類Dev

2 つの外部キーに基づく SQL の列の更新

分類Dev

列の値に基づいて最初のいくつかの重複を保持します

分類Dev

行が重複している場合にのみ、特定の列にNAを含む行を削除する(他の2つの列に基づく)

分類Dev

別の列に基づいて1つの列の重複を削除する

分類Dev

列に基づいていくつかの行に重みを付ける

分類Dev

2つのことに基づくアレイの重複除外

分類Dev

Excelは、別の列に基づいて1つの列で重複します

分類Dev

行全体ではなく、1つ以上の他の列に基づいて重複する値を除外する

分類Dev

重複を除く2つのcoumn値に基づいて2つのsparkデータセットをマージします

分類Dev

Awkを使用して、2つの列に基づく重複行を排除します

分類Dev

2つの列の値に基づいてすべての重複を取得するMySQLクエリ

分類Dev

重複する列のペアを削除し、2つの列に基づいて行を並べ替えます

分類Dev

2つのテーブルに基づく重複エントリ

分類Dev

別の列に基づいて重複の1つを削除する方法は?

分類Dev

SQL Server:SELECTの1つの列に基づいて重複を削除します

Related 関連記事

  1. 1

    2つの列に基づいて重複レコードを検索する

  2. 2

    2つの列に基づくサブセットの重複

  3. 3

    2つの列に基づいて新しい重複値を削除する.NETCore

  4. 4

    rの2つの列に基づいて重複を選択します

  5. 5

    2つの列の条件に基づいて重複を削除します

  6. 6

    Rの2つの列に基づいて重複を削除する

  7. 7

    OracleSQL-2つの列に基づいて重複を選択します

  8. 8

    2 つの列の値に基づいてデータフレーム pandas の重複を削除します

  9. 9

    最初の2つの列の値に基づいて、htmlテーブルの重複を確認します

  10. 10

    特定のExcelシートの2つの列に基づいて重複を削除する

  11. 11

    MySqlの2つの列に基づいて重複レコードを削除します

  12. 12

    他のいくつかの列に基づいて重複を探しています

  13. 13

    1つだけでなく2つの条件に基づいて他の列から重複を削除するにはどうすればよいですか?

  14. 14

    PHPで2つのキーと値の組み合わせに基づいて配列から重複データを削除する方法

  15. 15

    2 つの外部キーに基づく SQL の列の更新

  16. 16

    列の値に基づいて最初のいくつかの重複を保持します

  17. 17

    行が重複している場合にのみ、特定の列にNAを含む行を削除する(他の2つの列に基づく)

  18. 18

    別の列に基づいて1つの列の重複を削除する

  19. 19

    列に基づいていくつかの行に重みを付ける

  20. 20

    2つのことに基づくアレイの重複除外

  21. 21

    Excelは、別の列に基づいて1つの列で重複します

  22. 22

    行全体ではなく、1つ以上の他の列に基づいて重複する値を除外する

  23. 23

    重複を除く2つのcoumn値に基づいて2つのsparkデータセットをマージします

  24. 24

    Awkを使用して、2つの列に基づく重複行を排除します

  25. 25

    2つの列の値に基づいてすべての重複を取得するMySQLクエリ

  26. 26

    重複する列のペアを削除し、2つの列に基づいて行を並べ替えます

  27. 27

    2つのテーブルに基づく重複エントリ

  28. 28

    別の列に基づいて重複の1つを削除する方法は?

  29. 29

    SQL Server:SELECTの1つの列に基づいて重複を削除します

ホットタグ

アーカイブ