私はmysqlクエリに取り組んでいます。条件付きで選択する
シナリオ:
私は、人々は、彼らが(NOTIFY_INDUSTRY)に興味のある業種を選択することができるウェブサイトを構築しています。選択した値を結合してデータベースフィールドに格納します。
例:メンバーは農業(id = 9)と石油とガス(id = 13)を選択します。私はそれらを9-13としてデータベースに登録します。 ユーザーは2つに限らず、複数の業界を選択できます。
また、メンバーは、データベースに格納されている情報技術を前提とした業界(COMPANY_INDUSTRY)を選択することもできます。
Sample table (members):
ID
EMAIL
COMPANY_NAME
COMPANY_INDUSTRY
NOTIFY_INDUSTRY
問題:
ウェブサイト上の新しいユーザー登録、メール(メールは毎日送信されます)新しいユーザーの業界(COMPANY_INDUSTRY)を持っている既存のユーザーに送信されるように関心のある業界の1つ(NOTIFY_INDUSTRY)。
は私がやっていること:これは、右のメンバーを選択しないと、私はそれについて
EDIT行くための正しい方法を知らない
$sql="select id, email
from members
where notify_industry in (
select company_industry
from members
where datediff($today, date_activated) <= 1)"
- 現在の出力と正確な問題:
必要な場合でも、行は返されません。
新しいユーザーのcompany_industryが9であり、notify_industryの既存ユーザーが10-9-20であると仮定します。それは、新しいメンバーが既存のメンバーの関心のあるカテゴリにあるので、既存のメンバーの電子メールを返すことを意味します。空白が表示される
期待どおりの結果を得ることができますか?あなたは現在正確になっている出力について何が間違っていますか? – JohnFx
データベースを正規化する必要があります。 '9-13'を保存する代わりに、このシナリオでは2つの異なる行に' 9'と '13'を保存します。 –
テーブルを正規化する最良の方法は何ですか?ユーザーが30種類のカテゴリに興味がある場合は、30種類の異なるカテゴリをテーブルの異なる30の行に挿入し、すべてのメンバーに対して同じ操作を行いますか?親切に説明してください –