Hallo,
Ik wil een scriptje maken dat gebruik maakt van een aantal MySQL-tabellen. Met het script kunnen links aan een pagina worden toegevoegd. Deze kunnen worden gekozen uit een vast aanbod aan keuzes, of handmatig worden toegevoegd.
Nu wil ik de links met één query selecteren. Dit werkt op zich goed:
Het ziet er alleen nogal omslachtig uit. Kan dit mooier? Ik heb MySQL.com erop nageslagen en heel wat geprobeerd, maar ik kan niks mooiers verzinnen dat nog werkt ook.
Het resultaat moet als volgt zijn:
Voor wie wil testen, hierbij mijn tabellen met inhoud:
Alvast bedankt!
Ik wil een scriptje maken dat gebruik maakt van een aantal MySQL-tabellen. Met het script kunnen links aan een pagina worden toegevoegd. Deze kunnen worden gekozen uit een vast aanbod aan keuzes, of handmatig worden toegevoegd.
Nu wil ik de links met één query selecteren. Dit werkt op zich goed:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| ( SELECT naam, url, 0 AS keuze, plaats FROM links JOIN links_handmatig USING (lid) ) UNION ( SELECT naam, url, 1 AS keuze, plaats FROM links JOIN links_gekozen USING (lid) JOIN keuzes USING (kid) ) ORDER BY plaats |
Het ziet er alleen nogal omslachtig uit. Kan dit mooier? Ik heb MySQL.com erop nageslagen en heel wat geprobeerd, maar ik kan niks mooiers verzinnen dat nog werkt ook.
Het resultaat moet als volgt zijn:
code:
1
2
3
4
5
| naam url keuze plaats Mozilla http://www.mozilla.org/ 1 1 Tweakers http://www.tweakers.net/ 1 2 PHP http://www.php.net/ 0 3 MySQL http://www.mysql.com/ 0 4 |
Voor wie wil testen, hierbij mijn tabellen met inhoud:
code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| CREATE TABLE `keuzes` ( `kid` int(11) NOT NULL auto_increment, `naam` varchar(255) NOT NULL default '', `url` varchar(255) NOT NULL default '', PRIMARY KEY (`kid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `keuzes` (`kid`, `naam`, `url`) VALUES (1, 'Google', 'http://www.google.nl/'), (2, 'Tweakers', 'http://www.tweakers.net/'), (3, 'Mozilla', 'http://www.mozilla.org/'), (4, 'Nu.nl', 'http://www.nu.nl/'); CREATE TABLE `links` ( `lid` int(11) NOT NULL auto_increment, `plaats` int(11) NOT NULL default '0', PRIMARY KEY (`lid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; INSERT INTO `links` (`lid`, `plaats`) VALUES (1, 3), (2, 1), (3, 2), (4, 4); CREATE TABLE `links_gekozen` ( `lid` int(11) NOT NULL default '0', `kid` int(11) NOT NULL default '0', PRIMARY KEY (`lid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `links_gekozen` (`lid`, `kid`) VALUES (2, 3), (3, 2); CREATE TABLE `links_handmatig` ( `lid` int(11) NOT NULL default '0', `naam` varchar(255) NOT NULL default '', `url` varchar(255) NOT NULL default '', PRIMARY KEY (`lid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `links_handmatig` (`lid`, `naam`, `url`) VALUES (1, 'PHP', 'http://www.php.net/'), (4, 'MySQL', 'http://www.mysql.com/'); |
Alvast bedankt!
[ Voor 6% gewijzigd door Jeeeroen op 18-05-2006 21:11 ]