Join met verwijderde gegevens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

30/12/2016 10:12:54
Quote Anchor link
Hoi,

ik heb deze query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


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
 
PHP hulp

PHP hulp

24/12/2024 04:21:26
 
Ben van Velzen

Ben van Velzen

30/12/2016 12:43:41
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

30/12/2016 14:38:24
Quote Anchor link
Misschien wil je de kijkers thuis ook vertellen:
- 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.
 
Jan R

Jan R

31/12/2016 09:10:21
Quote Anchor link
Hier is de structuur van de 2 tabellen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;

rechtstreeks uit de backup :)

Eveneens een beetje gegevens voor testdoeleinden
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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");

Jan
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/01/2017 19:37:20
Quote Anchor link
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


Kan je gewoon niet beter geen gegevens uit die tabel verwijderen maar in plaats daarvan een kolom toevoegen met actief of niet.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.