Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

COUNT auf andere Tabelle

10 views
Skip to first unread message

Volker Englisch

unread,
Apr 22, 2013, 9:54:23 AM4/22/13
to
Ich schon wieder...

Ich habe eine Tabelle "Film":

[...]
Spieler1 int(10) unsigned,
Spieler2 int(10) unsigned,
Spieler3 int(10) unsigned,
Regie int(10) unsigned,
[...]

Sowie eine Tabelle "Person":

Nr int(10) auto_increment,
Name char(30),
[...]

In der Tabelle "Film" sind die Schauspieler und Regisseure mit den
jeweiligen Nummern eingetragen, unter denen sich in der Tabelle
"Person" der passende Name dazu findet. Um "Leichen" in der
Personentabelle aufzuspüren, hätte ich gerne gewusst, wie oft jede
Person im Film z.B. als Schauspieler vorkommt. Sinngemäß etwa so:

SELECT Nr,
Name,
SELECT(COUNT(*) FROM Film WHERE `Film.Spieler1`=`Person.Nr`) AS 'S1'
FROM Person ORDER BY Name"

Ergibt:

| ERROR 1064 (42000) at line 2: You have an error in your SQL syntax;
| check the manual that corresponds to your MySQL server version for the
| right syntax to use near 'FROM Film WHERE Film.Spieler1=PersonNr))
| FROM Person ORDER BY Name' at line 10

Ich habe schon einiges an der Syntax versucht, bekomme es aber nicht
gebacken. Falls jemand Lust hat, mir einen Tritt in die richtige
Richtung zu geben: Danke!

Volker

Dieter Nöth

unread,
Apr 22, 2013, 10:54:36 AM4/22/13
to
Volker Englisch wrote:

> SELECT Nr,
> Name,
> SELECT(COUNT(*) FROM Film WHERE `Film.Spieler1`=`Person.Nr`)
AS 'S1'
> FROM Person ORDER BY Name"
>
> Ergibt:
>
> | ERROR 1064 (42000) at line 2: You have an error in your SQL syntax;
> | check the manual that corresponds to your MySQL server version for the
> | right syntax to use near 'FROM Film WHERE Film.Spieler1=PersonNr))
> | FROM Person ORDER BY Name' at line 10

Schieb die Klammer ein Wort nach links

SELECT Nr,
Name,
(SELECT COUNT(*) FROM Film WHERE `Film.Spieler1`=`Person.Nr`) AS
'S1'
FROM Person ORDER BY Name"

Ich würde aber statt einer Scalar Subquery einfach ein Count über einen
Left Join machen:

SELECT Nr,
Name,
COUNT(`Film.Spieler1`)
FROM Person LEFT JOIN Film
ON `Film.Spieler1`=`Person.Nr`
GROUP BY Nr, Name
ORDER BY Name

Dieter

Thomas 'PointedEars' Lahn

unread,
Apr 22, 2013, 1:22:44 PM4/22/13
to
Dieter Nöth wrote:

> […]

Du antwortest auf ein de-facto nicht existierendes Posting.

--
PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Dieter Nöth

unread,
Apr 22, 2013, 1:44:05 PM4/22/13
to
Thomas 'PointedEars' Lahn wrote:

> Dieter Nöth wrote:
>
>> […]
>
> Du antwortest auf ein de-facto nicht existierendes Posting.

Wow, "de-facto nicht existierend", du bist ja toll.

In dem Moment, wo ich geantwortet habe, hat das Posting existiert, sonst
hätte ich es wohl nicht gesehen. Dass Volker es dann gecancelt hat, ist
nicht mein Problem.

Soll ich jetzt meine Antwort auch canceln, passt das dem Herrn dann
besser? Aber dann hast du ja auf eine de-facto nicht existierende
Antwort auf ein de-facto nicht existierendes Posting geantwortet.

Hast du eigentlich nichts besseres zu tun?

Dieter

Thomas 'PointedEars' Lahn

unread,
Apr 22, 2013, 1:51:57 PM4/22/13
to
Dieter Nöth wrote:

> Thomas 'PointedEars' Lahn wrote:
>> Dieter Nöth wrote:
>>> […]
>> Du antwortest auf ein de-facto nicht existierendes Posting.
>
> Wow, "de-facto nicht existierend", du bist ja toll.
>
> In dem Moment, wo ich geantwortet habe, hat das Posting existiert, sonst
> hätte ich es wohl nicht gesehen. Dass Volker es dann gecancelt hat, ist
> nicht mein Problem.

Volker muss es wenige Minuten nach dem Posten gecancelt haben, also lange
bevor Du gepostet hast. (Mein) KNode hat mir das sofort durch eine
Fehlermeldung beim Aufrufen angezeigt. (Dein) Thunderbird macht das leider
nicht, wie ich aus eigener, langjähriger Erfahrung damit weiss. (IIRC merkt
man es erst bei Ctrl+U.)

> Soll ich jetzt meine Antwort auch canceln, passt das dem Herrn dann
> besser? Aber dann hast du ja auf eine de-facto nicht existierende
> Antwort auf ein de-facto nicht existierendes Posting geantwortet.
>
> Hast du eigentlich nichts besseres zu tun?

Gern geschehen.
0 new messages