別のテーブルに存在しない値を取得する必要があります。私はShares
とShare_types
テーブルで作業しています。テーブル間に存在しない値を取得するクエリ
現在のところ、私はこれをPHPで扱っていますが、私は常にShare_types
の2,500行をループしていますが、クエリで行の量を解決することは可能だと思います。
ユーザーは現在、このプロセスを経る:
- 株式の種類を選択 -
Anual share
- を抽出することになる年を選択 -
2016
- コード
2016
年まで、全株式を生成します。まだ生成されていない。つまり、存在しない場合は2016
の年が生成されます。私のPHPコードは以下のようである、と述べた
:
// Retrieves always the 2,500~ rows
$listOfShareTypes = "SELECT user_id, date_start FROM share_types WHERE type = 'Anual share'";
foreach($listOfShareTypes as $type)
{
// Now is where I validate if the share already exists
$hasShare = "SELECT COUNT(*) FROM shares WHERE the_year = $yearSelectedByUser, user_id = $type->user_id, share_type_id = $type->id";
if($hasShare == TRUE)
continue;
else
// Create the share..
}
ので、通常は、クエリを経由して私は、クエリで2 select
を行うだろう、別のテーブルに存在しない結果を取得するために、少数の検索の後にはLEFT JOIN
の使用を指しています。私は私がSQLFiddle上に作成し、この例を見てみると(などのuser_id、share_type_id、年、)いくつかのフィールド
を一致させる必要があるため、これを達成する方法を見当もつかないしかし、結果は次のようになります。
(5, 3, 'Anual', '2015-06-28')
2016
の年を選択したので、この結果で、から2016
まで(PHPで)ループする必要があります。
このクエリを試みるすべてのこのような場合には、ユーザーが「2017」を選択した場合、それはすべての行を取得する必要があり、私はあなたの答えを受け入れたが、今、私は別の問題に直面しました5行は 'Shares'にまだ追加されていないためです。あなたはどのようにクエリを介してそれを行うには手がかりがありますか? – Linesofcode
いくつかのサンプルデータをフィディルドに追加して、望ましい結果を表示できますか? –