0

すでに多くのリンクを確認しましたが、問題を解決できるものはありませんでした。したがって、以前にMySqlに取り組んだことがありますが、サブクエリを使用する必要があるこの状況に遭遇したことはありませんが、労力が少ないとは言わないでください。だから、ここに私の疑問があります..

"SELECT * FROM klms as Klm WHERE gcil_id = (SELECT id FROM gcils WHERE genre = 'Clothes')"

明らかに、genre = 'Clothes' の行が 1 行以上あるため、1 行以上が返されますが、このエラーが表示されます

Error: SQLSTATE[21000]: Cardinality violation: 1242 Subquery returns more than 1 row

ところで、私は自分のアプリに Cakephp を使用していますが、SQL クエリを使用する方が簡単だと思います。

4

1 に答える 1

2

INequal の代わりに使用:

SELECT * 
FROM klms as Klm 
WHERE gcil_id IN (SELECT id FROM gcils WHERE genre = 'Clothes')

または、次を使用できますINNER JOIN

SELECT DISTINCT klm.* 
FROM klms as Klm
   INNER JOIN gcils g ON Klm.gcil_id = gcils.id
WHERE g.genre = 'Clothes'
于 2013-02-19T19:25:10.683 に答える