2017-05-22 3 views
0

こんにちは私はselectカウントを取得するためにSQLクエリを処理していましたが、この問題で私を助けてくれるでしょうか?ここに私のテーブルの構造があります。SQLエラーでテーブルを呼び出す

表構造

categorias Table 
------------------------------ 
idCat(PK) nombre 
------------------------------ 
1  "category1" 
2  "category2" 
3  "category3" 


subcategorias Table 
------------------------------------ 
idSubcat(PK) nombre categId(FK) 
--------------------------------- 
    1   "subcat1"  2 
    2   "subcat2"  3 
    3   "subcat3"  3 

私のクエリ

SELECT count(*) valor 
FROM subcategorias 
WHERE categorias.nombre= "category3" 
AND subcategorias.nombre= "subcat1" 

と私のクエリspected結果は1でなければなりませんが、それは誤り言う:

SELECT count(*) 
FROM categorias, subcategorias 
WHERE categorias.nombre= "category3" AND subcategorias.nombre= "subcat1" 

答えて

0

はこれを試してみてください必ず そこにある2つのテーブルとの結合を行います。問題は、他のテーブルのデータを含むselectを使用して、サブカテゴリーからselectを実行していることです。このようなもの。

SELECT count(*) valor 
FROM subcategorias 
INNER JOIN categories ON categorias.nombre= "category3" 
WHERE subcategorias.nombre= "subcat1" 
1

これらは、2つの別々のテーブル、自動的にあなたがそれらの1(subcategorias)から照会することはできませんので、お互いについて「知っている」、そして、それはそれの一つが値だということを知っていると仮定していないです(categId = 3)は、他のテーブルの特定の行(ID = 3)を指します。

何をする必要があなたのクエリで2つのテーブルを結合です:

SELECT count(*) 
FROM subcategorias 
JOIN categorias on subcategorias.CategId = categorias.IdCat 
WHERE categorias.nombre= "category3" 
AND subcategorias.nombre= "subcat1" 

あなたはWHERE句なしでこれをしようとした場合、あなたはそれがテーブルからの行の組み合わせを「参加する」ことがわかりますあなたの条件に基づいて、それはcategoryIdが一致するはずです。

あなたのWHERE句は、結果として得られる "コンボテーブル"から効果的にクエリを実行し、必要な結果を与える必要があります。

関連する問題