Mailinglisten-Archive |
This is a multi-part message in MIME format.
------=_NextPart_000_0011_01C17359.982C2CC0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Hi,
> zeig uns doch mal den Aufbau deiner Tabelle und ein paar Testdaten,
> dann muessen wir nicht ins Blaue hinein raten.
ok hier :
------=_NextPart_000_0011_01C17359.982C2CC0
Content-Type: text/plain;
name="selfjoin.txt"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="selfjoin.txt"
Tabelle (mitglieder) mit mannlichen Migliedern eines Vereins.
Zumeist Vater und S=F6hne:
_______________________________
|name |vorn |strasse |status|
|______|_____|_________|______|
|Peters|Klaus|Forstweg |Vater |
|------+-----+---------+------|
|Peters|Sven |Forstweg |Sohn |
|------+-----+---------+------|
|Hansen|Peter|Baumallee|Vater |
|------+-----+---------+------|
|Hansen|Udo |Baumallee|Sohn |
|------+-----+---------+------|
|Hansen|Sepp |Baumallee|Sohn |
|------+-----+---------+------|
|Jahnke|Kurt |Dorfallee|Vater |
|------+-----+---------+------|
|Volmer|Hans |Krausestr|Sohn |
|------+-----+---------+------|
|Kuehne|Joern|Krausestr|Vater |
|------+-----+---------+------|
Es soll jedem Vater seine Soehne zugeordnet werden.
V=E4ter ohne S=F6hne werden aufgelistet.
S=F6hne ohne Vater werden NICHT aufgelistet.
Ergebnis soll in etwa so aussehen:
___________________________________
|name |vorn |strasse |soehne |
|______|_____|_________|__________|
|Peters|Klaus|Forstweg |Sven |
|------+-----+---------+----------|
|Hansen|Peter|Baumallee|Udo, Sepp |
|------+-----+---------+----------|
|Jahnke|Kurt |Dorfallee| |
|------+-----+---------+----------|
|Kuehne|Joern|Krausestr| |
|------+-----+---------+----------|
Folgendes Statement dauert ewig (ca. 2400 Datensa=E4tze) und produziert =
nat=FCrlich f=FCr jede Beziehung eine neue Zeile:
SELECT
a.name as name,
a.vorname as vorn,
a.strasse as strasse,
b.vorname as sohn
FROM
mitglieder a
LEFT JOIN
mitglieder b
ON
(a.name=3Db.name)
AND
(a.strasse=3Db.strasse)
AND
(b.status like 'Sohn')
WHERE
(a.status =3D 'Vater')=20
___________________________________
|name |vorn |strasse |sohn |
|______|_____|_________|__________|
|Peters|Klaus|Forstweg |Sven |
|------+-----+---------+----------|
|Hansen|Peter|Baumallee|Udo |
|------+-----+---------+----------|
|Hansen|Peter|Baumallee|Sepp |
|------+-----+---------+----------|
|Jahnke|Kurt |Dorfallee|NULL |
|------+-----+---------+----------|
|Kuehne|Joern|Krausestr|NULL |
|------+-----+---------+----------|
Zum testen:
CREATE TABLE mitglieder (
name char(20) NOT NULL default '',
vorname char(20) NOT NULL default '',
strasse char(20) NOT NULL default '',
status char(20) NOT NULL default ''
) TYPE=3DMyISAM;
INSERT INTO mitglieder VALUES ('Peters', 'Klaus', 'Forstweg', 'Vater');
INSERT INTO mitglieder VALUES ('Peters', 'Sven', 'Forstweg', 'Sohn');
INSERT INTO mitglieder VALUES ('Hansen', 'Peter', 'Baumallee', 'Vater');
INSERT INTO mitglieder VALUES ('Hansen', 'Udo', 'Baumallee', 'Sohn');
INSERT INTO mitglieder VALUES ('Hansen', 'Sepp', 'Baumallee', 'Sohn');
INSERT INTO mitglieder VALUES ('Jahnke', 'Kurt', 'Dorfallee', 'Vater');
INSERT INTO mitglieder VALUES ('Volmer', 'Hans', 'Krausestr', 'Sohn');
INSERT INTO mitglieder VALUES ('Kuehne', 'Joern', 'Krausestr', 'Vater');
------=_NextPart_000_0011_01C17359.982C2CC0--
---
!!NEU!!
Fragen und Antworten zu MySQL und dieser Liste unter
-->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive