Subselect in mySQL

Subselect in mySQL

am 11.03.2007 11:57:55 von Volker Mattstedt

Hallo,

ich habe (vom Prinzip her) zwei Tabellen:

- Tabelle "Kunden"
- Tabelle "Bestellung"

(eine Spalte KdNr speichert die Kundennummer und ist das Bindeglied zwischen
den beiden Tabellen)

Nun möchte ich eine Liste aller Bestellungen ausgeben, in der Art:

K.Name | B.Artikel
---------+-------------
Müller | Staubsauber
Müller | Notebook
Meier | CD
Meier | Kochtop
Meier | Vase
Schmidt | Telefon

Das geht mit z.B.

SELECT K.Name, B.Artikel
FROM Kunden K, Bestellung B
WHERE K.KdNr = B.KdNr

Was ich jetzt gern hätte wäre eine zusätzliche Spalte, in der ich pro
Bestellung sehe, wieviele Artikel der Kunde insgesamt bereits bestellt hat,
also wie oft die Kundennummer in Tabelle Bestellung vorkommt:

K.Name | B.Artikel | Anzahl
---------+------------+-------
Müller | Staubsauber| 2
Müller | Notebook | 2
Meier | CD | 3
Meier | Kochtop | 3
Meier | Vase | 3
Schmidt | Telefon | 1

Mit MS-SQL könnte man ein Subselect anwenden, z.B.

SELECT K.Name, B.Artikel, (SELECT count(*) FROM Bestellung B1 WHERE
B1.KdNr.=K.KdNr) AS Anzahl
FROM Kunden K, Bestellung B
WHERE K.KdNr = B.KdNr

Das geht aber in mySQL leider nicht.

Wie sähe das SELECT Statement für MySQL aus?

Danke!

Re: Subselect in mySQL

am 11.03.2007 15:28:03 von Harald Fuchs

In article ,
"Volker Mattstedt" writes:

> Was ich jetzt gern hätte wäre eine zusätzliche Spalte, in der ich p=
ro
> Bestellung sehe, wieviele Artikel der Kunde insgesamt bereits bestellt ha=
t,
> also wie oft die Kundennummer in Tabelle Bestellung vorkommt:

> K.Name | B.Artikel | Anzahl
> ---------+------------+-------
> Müller | Staubsauber| 2
> Müller | Notebook | 2
> Meier | CD | 3
> Meier | Kochtop | 3
> Meier | Vase | 3
> Schmidt | Telefon | 1

> Mit MS-SQL könnte man ein Subselect anwenden, z.B.

> SELECT K.Name, B.Artikel, (SELECT count(*) FROM Bestellung B1 WHERE
> B1.KdNr.=3DK.KdNr) AS Anzahl
> FROM Kunden K, Bestellung B
> WHERE K.KdNr =3D B.KdNr

> Das geht aber in mySQL leider nicht.

> Wie sähe das SELECT Statement für MySQL aus?

Haargenauso - vorausgesetzt, Du verwendest keine allzu prähistorische
Version von MySQL. Der Steinzeit-Würgaround wäre eine temporäre
Tabelle mit Kundendaten plus Anzahl der Bestellungen.

Re: Subselect in mySQL

am 11.03.2007 18:04:37 von Volker Mattstedt

> Haargenauso - vorausgesetzt, Du verwendest keine allzu prähistorische
> Version von MySQL. Der Steinzeit-Würgaround wäre eine temporäre
> Tabelle mit Kundendaten plus Anzahl der Bestellungen.

Bist Du sicher?

Jetzt weiss ich nicht, was Du mit "prähistorische Version" meinst, ich nutze
4.0.24, welche bei meinem Provider HE installiert ist. Und damit geht das
m.E. nicht.

Re: Subselect in mySQL

am 11.03.2007 18:58:22 von Daniel Fischer

Volker Mattstedt!

> Jetzt weiss ich nicht, was Du mit "prähistorische Version" meinst, ich nutze
> 4.0.24, welche bei meinem Provider HE installiert ist. Und damit geht das
> m.E. nicht.

Das ist in der Tat etwas alt, 5.0 sollte es schon sein. Subselects gibt es
ab 4.1, aber auch 4.1 wird nicht mehr aktiv weiter entwickelt.


Gruß
Daniel

Re: Subselect in mySQL

am 11.03.2007 19:10:24 von Harald Fuchs

In article ,
"Volker Mattstedt" writes:

>> Haargenauso - vorausgesetzt, Du verwendest keine allzu prähistorische
>> Version von MySQL. Der Steinzeit-Würgaround wäre eine temporäre
>> Tabelle mit Kundendaten plus Anzahl der Bestellungen.

> Bist Du sicher?

> Jetzt weiss ich nicht, was Du mit "prähistorische Version" meinst, ich =
nutze
> 4.0.24, welche bei meinem Provider HE installiert ist. Und damit geht das=

> m.E. nicht.

Richtig, Subselects gehen "erst" seit 4.1. In Anbetracht der
Tatsache, daß inzwischen 5.0 stabil und 5.1 in der Entwicklung ist,
scheint mir die Bezeichnung "prähistorisch" für 4.0.x durchaus
angebracht.

Re: Subselect in mySQL

am 12.03.2007 07:46:10 von Volker Mattstedt

Danke für eure Antworten!

Ich vermute, für HostEurope ist es nicht einfach, mal eben auf eine neue SQL
Version umzustellen... die befürchten wahrscheinlich, es könnten bei allen
Kunden Kompatibilitätsprobleme auftreten und die würde sich dann alle beim
HE-Support melden. ;-)

Jedenfalls weiss ich jetzt Bescheid!

Re: Subselect in mySQL

am 12.03.2007 14:20:50 von Andreas Scherbaum

Hallo,

Volker Mattstedt wrote:
>
> Ich vermute, für HostEurope ist es nicht einfach, mal eben auf eine neue SQL
> Version umzustellen... die befürchten wahrscheinlich, es könnten bei allen
> Kunden Kompatibilitätsprobleme auftreten und die würde sich dann alle beim
> HE-Support melden. ;-)

das Problem scheint branchentypisch zu sein. Ich weiss von mindestens zwei
anderen größeren Hostern, die default auch noch 3.23 Mysql Versionen auf ihren
gemanagten Servern mitinstallieren.

Wie sagte mir ein Mysql Mitarbeiter letztens auf der FOSDEM? "Die sind einfach
nicht totzukriegen".


Bye

--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)