2012-03-26 23 views
1

ich die Informationen des Benutzers von meiner MySQL-Datenbank auszuwählen, wie unten dargestellt:Inner Join COUNT (*) verwenden

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

aber ich möchte ein zusätzliches Bit off Informationen zu den zurückgegebenen Daten hinzuzufügen. Das zusätzliche Datenbit ist die Gesamtanzahl von Datensätzen in einer Tabelle mit dem Namen "Venues", wobei das Zeilenfeld "user_id" dasselbe ist wie das "id" -Feld in der Tabelle "Users".

Bitte können Sie mir sagen, wo ich mit der folgenden Abfrage falsch liege? Hier ist der Fehler, den ich erhalte:

Sie haben einen Fehler in Ihrer SQL-Syntax; das Handbuch, dass zu Ihrer MySQL-Server-Version entspricht, die für die richtige Syntax in der Nähe zu verwenden ‚*) FROM Users AS u INNER Venues AS v JOIN ON u.id = v.user_id WHERE u.id = '' in Zeile 1

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

wahrscheinlich 'count (v. *)' (Wenn überhaupt möglich). – hakre

+1

müssen Sie GROUP BY-Anweisung verwenden – MarcinJuraszek

Antwort

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 ist eine MySQL Funktion, kein Mitglied der Tabelle v. Übergeben Sie ein Argument, das angibt, was Sie zählen möchten - in diesem Fall die Zeilen v.

1

Es sollte COUNT(v.*) sein. Andernfalls wird es als "Funktionszählung in Tabelle V" interpretiert, die nicht gültig ist.

1

Verwenden Sie einfach count(*) anstelle von v.count(*).