0

私は2つのテーブルを持っています

table1
=======
id   primary
sku
price
vendor

table2
=====
id    primary
sku
alt_sku

基本的に、私の検索用語は sku または alt_sku になり、それに基づいて table1 からデータを選択したい

これを行うための最良のアプローチは何ですか?table1.sku と table2.sku /table2.alt_sku の間の関係を格納するために 3 番目のテーブルを作成する必要がありますか? またはどうすればtable1からデータを取得できますか

申し訳ありませんが、この質問が非常にばかげている場合...私はmysqlを学ぼうとしているので、WPを使用していて基本に行ったことはありません

4

4 に答える 4

0

基本的に、テーブルリレーションシップのフィンガールールは次のとおりです。

リレーションがそうである場合は、テーブルone-to-manyのPKをmanyテーブルの追加の列として保存する必要がありoneます。

リレーションの場合はmany-to-many、3番目のテーブル(接続テーブル)を作成する必要があります。このテーブルには、両方のテーブルの両方のPKが含まれます(各tbl1 PKに対して、すべてのtbl2 PKがあり、その逆も同様です)。

そうすれば、レコードの重複を防ぐことができます。

于 2013-02-13T14:21:15.993 に答える
0

内部結合を試すことができます。TERMあなたが探しているSKUであると仮定します。

SELECT
  t1.*
FROM
  table1 t1
  inner join table2 t2 on (t1.sku = t2.sku)
WHERE
     t1.sku = 'TERM'
  or t2.alt_sku = 'TERM'
于 2013-02-13T14:21:16.040 に答える
0

Table2 で正確に何をしようとしていますか? おそらく、より良いアプローチは次のとおりです。

Table1 
   id
   price
   vendor

Table2
   Table1Id
   Sku

このようにして、Table1 に関連付けられた 1 ~ N 個の SKU を格納できます。潜在的な SKU が 2 つだけ必要な場合は、Table2 に SkuType フィールドを追加できます - プライマリ用に 1 つ、代替用に 2 つですが、ニーズに対して深すぎる可能性があります...

そしてクエリするには:

SELECT T.*
FROM Table1 T
   JOIN Table2 T2 ON T.Id = T2.Table1Id
WHERE T2.Sku = 'SomeSku'
于 2013-02-13T14:17:50.330 に答える