2012-02-22 7 views
0

私は2つのテーブルを持っています。 1つの表には、米国のすべての州が含まれています。他のテーブルは、それらの州のもののリストです。MySQL - 別のテーブルの主キーと一致するように多値フィールドをクエリするにはどうすればよいですか?

tbl_states - stateID (PK), stateName 
tbl_stuff - stuffID, stuffName, relState 

値はrelState列がtbl_states.stateID列に関連するこの

1 | Alabama 
2 | Georgia 
3 | Maryland 

のように見えると私は、この形式でそれを持っている:

私のテーブルには、構造は次のようになりますです。私は複数の州を選択し、州のものを州に割り当てるWebフォームを用意する予定です。

1 | This is some stuff | 1,2 [ and this stuff is only AL, GA. ] 

ですから、私はこのための選択文を書くための最善の方法を見つけようとしています。 mysqlを厳密に実行する方法はありますか?

+0

これを正しく読んでいる場合、relState列には「| 1,2 [そしてこの物はAL、GAです」]などの値が含まれていますか? –

答えて

2

データベース内の複数の値のフィールドは悪い考えです。私はこれを自分で行うことを検索しながら、この記事に出くわしたと第二の答えは参考になる考え出し

enter image description here

+0

トピックオフ:データベースダイアグラムをすばやく作成するために使用するものは何ですか? –

+0

@BD - relStateは1,2,3,5,10のような値を含みます。 – Robbiegod

+0

@BD。 Microsoft Visio –

0

:代わりに、このような状態とスタッフ間の多対多の関係を解決します。複数のフィールドで検索の効率を落とし、スケーラビリティに影響を与え、データの整合性の問題を促進することは事実ですが、私の場合のように、他のシステムとのシンプルさ、レポート作成、統合に必要です。テーブルを想定し

Table: States 
Id   Name 
235325235 'Alabama' 
457457432 'Georgia' 
334634636 'Maryland' 



Table: Stuff 
Id Text       StateIds 
1 'Some stuff'     '235325235' 
2 'Some Stuff for two states'  '235325235,457457432' 

次のクエリは、アラバマ州

SELECT * FROM Stuff WHERE FIND_IN_SET('235325235', Stuff.StateIds); 

のためのすべてのstuffsを返しますが、私は一意の低確率を作るためにあなたのIDの詳細は複雑で、私が推薦することに注意してください文字列検索機能を使用しているため、GUID/UUIDを使用します。

関連する問題