2017-05-30 5 views
0

私は通常の2つのテーブル、製品、カテゴリを持っていますが、多対多関係のため、両方を関連付けるキーマッピングテーブルを作成しました。この連想表は、まさにこのような例のためである:彼らはそれぞれのproduct_idcategory_id主キーに外部キーです関連テーブルを使用して製品、カテゴリをクエリ

id product_id category_id 
1  2   4 
2  2   6 
3  3   4 
etc 

これで、結果をテストするクエリを作成しようとしています。通常、特定のカテゴリに属している商品をいくつか紹介したいと思います。しかし、いくつかのクエリを試しましたが、私はmysql構文にエラーがあることを示しています。

select products.name 
from products 
join producto-categoria 
on producto-categoria.product_id = products.id 
join categorias 
on producto-categoria.category_id = categorias.id 
where categorias.id = 3 
limit 100 

私は実際には最初のphpmyadminの構造を作成し、それぞれのCSVファイルをアップロードして、最終的には彼らのFK連想テーブルにインデックスを作成した(また、キーマッピングテーブルと呼ばれる)と、私は持っていなかったを介してそれらをリンクFKリンクを作成している間にエラーが発生しました。 InnoDBエンジンとして。

+2

は、あなたのテーブルの名前を変更します。 –

答えて

0

名前の変更producto-categoriaproductocategoria。ハイフンは、マイナス記号として解釈されるため、構文エラーが発生しています。名前をエスケープすることもできますが、非標準文字を含む名前ではなく、「シンプル」な名前を使用する方が良い方法です。

次に、2つのより多くの事:

  • 使用テーブルテーブルの別名。
  • テーブルが使用されていないため、categoriasへの結合を取り除きます。だから、

:彼らは彼らでハイフンを持っていないので、

select p.name 
from products p join 
    productocategoria pc 
    on pc.product_id = p.id 
where pc.category_id = 3 
limit 100 
+0

ありがとうございます!私はそれを承認する前に10分待たなければなりません。あなたはあなたのポイントでまったく正しいです。ハイフンは私を疑わせましたが、それは完全に私を実現させるまで目覚めさせませんでした。エイリアスについても正しく、 – Arminius

+1

あなたの本を買うつもりです。タイトルは非常に興味深いです。実際にSQLを使用して販売レポートを作成するために最善を尽くしています。確実に私のために読む必要があります。 – Arminius

関連する問題