Join met verwijderde gegevens
ik heb deze query
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
toernooi,
ronde,
bord,
w.naam wit,
z.naam zwart,
uitslag,
p.wit,
p.zwart
FROM 4_punten p
left outer join 4_spelers w on p.wit=w.id or w.id is null
left outer join 4_spelers z on p.zwart=z.id or z.id is null
WHERE
toernooi=6
and w.club in (1,3)
and z.club in (1,3)
order by
Ronde,
Bord
toernooi,
ronde,
bord,
w.naam wit,
z.naam zwart,
uitslag,
p.wit,
p.zwart
FROM 4_punten p
left outer join 4_spelers w on p.wit=w.id or w.id is null
left outer join 4_spelers z on p.zwart=z.id or z.id is null
WHERE
toernooi=6
and w.club in (1,3)
and z.club in (1,3)
order by
Ronde,
Bord
Deze werk goed zolang ik geen gegevens heb gewist in de tabel 4_spelers. Ik zou echter willen dat indien de gegevens niet meer gevonden worden de andere gegevens toch nog doorgegeven worden.
Ik heb ook al geprobeerd zonder: or w.id is null en met gewoon join.
Jan
Je WHERE gooit hier roet in het eten. Wanneer er immers gegevens uit 4_spelers gewist zijn zullen w.club en z.club nooit de waarde hebben die je zoekt.
- wat het uiteindelijke doel van deze query is
- hoe de databasestructuur in elkaar zit en hoe de relevante dataset luidt
- wat er precies gebeurt indien 4_spelers gegevens mist
Dit leidt mogelijk tot nieuwe inzichten en mogelijk ook tot een eenvoudigere query, of een wijziging in de database-structuur, of beide.
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
CREATE TABLE 4_punten (
id int(11) NOT NULL AUTO_INCREMENT,
toernooi int(11) NOT NULL,
ronde int(11) NOT NULL,
bord int(11) NOT NULL,
wit int(11) NOT NULL,
zwart int(11) NOT NULL,
uitslag float NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=252 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
id int(11) NOT NULL AUTO_INCREMENT,
toernooi int(11) NOT NULL,
ronde int(11) NOT NULL,
bord int(11) NOT NULL,
wit int(11) NOT NULL,
zwart int(11) NOT NULL,
uitslag float NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=252 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
CREATE TABLE 4_spelers (
id int(11) NOT NULL AUTO_INCREMENT,
Naam varchar(50) COLLATE utf8_unicode_ci NOT NULL,
Club int(11) NOT NULL,
elo int(11) NOT NULL DEFAULT '0',
stamnr varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY Naam (Naam)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
id int(11) NOT NULL AUTO_INCREMENT,
Naam varchar(50) COLLATE utf8_unicode_ci NOT NULL,
Club int(11) NOT NULL,
elo int(11) NOT NULL DEFAULT '0',
stamnr varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY Naam (Naam)
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
rechtstreeks uit de backup :)
Eveneens een beetje gegevens voor testdoeleinden
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
INSERT INTO 4_punten VALUES("236", "6", "1", "1", "12", "2", "0.5");
INSERT INTO 4_punten VALUES("237", "6", "1", "2", "13", "4", "0");
INSERT INTO 4_punten VALUES("238", "6", "1", "3", "14", "5", "0");
INSERT INTO 4_punten VALUES("239", "6", "1", "4", "29", "1", "0");
INSERT INTO 4_punten VALUES("240", "6", "1", "1", "7", "18", "0");
INSERT INTO 4_punten VALUES("241", "6", "1", "2", "8", "20", "0.5");
INSERT INTO 4_punten VALUES("242", "6", "1", "3", "9", "17", "0");
INSERT INTO 4_punten VALUES("243", "6", "1", "4", "11", "19", "0");
INSERT INTO 4_spelers VALUES("1", " Jan", "1", "0", "13718");
INSERT INTO 4_spelers VALUES("2", " Rudi", "1", "1803", "19216");
INSERT INTO 4_spelers VALUES("4", " Rudy", "1", "1719", "0");
INSERT INTO 4_spelers VALUES("5", " Chris", "1", "1597", "11709");
INSERT INTO 4_spelers VALUES("12", " Luc", "3", "0", "");
INSERT INTO 4_spelers VALUES("13", " Dirk2", "3", "0", "");
INSERT INTO 4_spelers VALUES("14", " Gentiel", "3", "0", "");
INSERT INTO 4_spelers VALUES("29", "So", "3", "0", "0");
INSERT INTO 4_spelers VALUES("7", " Nico", "2", "0", "");
INSERT INTO 4_spelers VALUES("8", " Gilbert", "2", "1600", "45314");
INSERT INTO 4_spelers VALUES("9", "Germain", "2", "0", "");
INSERT INTO 4_spelers VALUES("11", " Dirk1", "2", "0", "");
INSERT INTO 4_spelers VALUES("17", " Nol", "4", "1749", "50504");
INSERT INTO 4_spelers VALUES("18", " Niko", "4", "0", "");
INSERT INTO 4_spelers VALUES("19", " Gwijde", "4", "1858", "5827");
INSERT INTO 4_spelers VALUES("20", " Ayla", "4", "1767", "26271");
INSERT INTO 4_punten VALUES("237", "6", "1", "2", "13", "4", "0");
INSERT INTO 4_punten VALUES("238", "6", "1", "3", "14", "5", "0");
INSERT INTO 4_punten VALUES("239", "6", "1", "4", "29", "1", "0");
INSERT INTO 4_punten VALUES("240", "6", "1", "1", "7", "18", "0");
INSERT INTO 4_punten VALUES("241", "6", "1", "2", "8", "20", "0.5");
INSERT INTO 4_punten VALUES("242", "6", "1", "3", "9", "17", "0");
INSERT INTO 4_punten VALUES("243", "6", "1", "4", "11", "19", "0");
INSERT INTO 4_spelers VALUES("1", " Jan", "1", "0", "13718");
INSERT INTO 4_spelers VALUES("2", " Rudi", "1", "1803", "19216");
INSERT INTO 4_spelers VALUES("4", " Rudy", "1", "1719", "0");
INSERT INTO 4_spelers VALUES("5", " Chris", "1", "1597", "11709");
INSERT INTO 4_spelers VALUES("12", " Luc", "3", "0", "");
INSERT INTO 4_spelers VALUES("13", " Dirk2", "3", "0", "");
INSERT INTO 4_spelers VALUES("14", " Gentiel", "3", "0", "");
INSERT INTO 4_spelers VALUES("29", "So", "3", "0", "0");
INSERT INTO 4_spelers VALUES("7", " Nico", "2", "0", "");
INSERT INTO 4_spelers VALUES("8", " Gilbert", "2", "1600", "45314");
INSERT INTO 4_spelers VALUES("9", "Germain", "2", "0", "");
INSERT INTO 4_spelers VALUES("11", " Dirk1", "2", "0", "");
INSERT INTO 4_spelers VALUES("17", " Nol", "4", "1749", "50504");
INSERT INTO 4_spelers VALUES("18", " Niko", "4", "0", "");
INSERT INTO 4_spelers VALUES("19", " Gwijde", "4", "1858", "5827");
INSERT INTO 4_spelers VALUES("20", " Ayla", "4", "1767", "26271");
Jan
Jan R op 30/12/2016 10:12:54:
Deze werk goed zolang ik geen gegevens heb gewist in de tabel 4_spelers. Ik zou echter willen dat indien de gegevens niet meer gevonden worden de andere gegevens toch nog doorgegeven worden.
Jan
Deze werk goed zolang ik geen gegevens heb gewist in de tabel 4_spelers. Ik zou echter willen dat indien de gegevens niet meer gevonden worden de andere gegevens toch nog doorgegeven worden.
Jan
Kan je gewoon niet beter geen gegevens uit die tabel verwijderen maar in plaats daarvan een kolom toevoegen met actief of niet.