2012-03-26 16 views
1

は、私は私のMySQLデータベースからユーザーの情報を選択していますを使用して参加:インナーCOUNT(*)

SELECT * FROM `Users` WHERE `$user_or_id` = ? 

しかし、私は返されたデータに余分なビットオフ情報を追加したいと思います。データの余分なビットは、 'Venues'という名前のテーブル内のレコードの総数で、行のフィールド 'user_id'は 'Users'テーブルの 'id'フィールドと同じです。

次のクエリでどこが間違っているのか教えてください。ここに私が受け取っているエラーがあります:

あなたはSQL構文に誤りがあります。 があなたのMySQLサーバのバージョンに対応していることを確認してください。右の構文は の近くにあります。

SELECT u.*, v.count(*) FROM `Users` AS u INNER JOIN `Venues` AS v ON u.id = v.user_id WHERE u.$user_or_id = ? 
+1

おそらく 'カウント(対。*)'(もし可能であれば)。 – hakre

+1

GROUP BY文を使用する必要があります – MarcinJuraszek

答えて

2
SELECT u.*, COUNT(v.*) FROM `Users` AS u INNER JOIN `Venues` AS v ON u.id = v.user_id WHERE u.$user_or_id = ? 

COUNT MySQLの機能ではなく、テーブルvのメンバーです。カウントしたいものを表す引数を渡します。この場合は、vの行です。

1

それはCOUNT(v.*)でなければなりません。さもなければそれは有効でない "テーブルVの内部の機能カウント"として解釈されます。

1

v.count(*)の代わりにcount(*)を使用してください。