Join hulp gevraagd
Ik probeer met join te werken, maar na een aantal voorbeelden te hebben geprobeerd, blijft er maar niks uit te komen... (nieuw op dit gebied..)
Mijn tabbellen: (KLANTEN EN KLANTENINFO)
CREATE TABLE `klanten` (
`id` int(11) NOT NULL auto_increment,
`klant` varchar(40) NOT NULL default '',
`logoname` varchar(30) NOT NULL default '',
`logotype` varchar(30) NOT NULL default '',
`logosize` int(11) NOT NULL default '0',
`logopath` varchar(60) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=58 ;
EN:
CREATE TABLE `klanteninfo` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`type` varchar(30) NOT NULL default '',
`size` int(11) NOT NULL default '0',
`path` varchar(60) NOT NULL default '',
`label` varchar(40) NOT NULL default '',
`tekst` text NOT NULL,
`datum` date NOT NULL default '0000-00-00',
`klant` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
In klanten staan de klantnamen en bijbehorende logo's. Die logo's wil ik dus ophalen aan de hand van de gemeenschappelijke deler "klant".
code:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
49
50
51
52
53
54
55
<? if (isset($_GET['selectie'])) {
$selectie = $_GET['selectie'];
} else {
$selectie = 1;
}
$query = "SELECT
count(*)
FROM
klanteninfo
WHERE
klant = '".mysql_real_escape_string($_GET['klant'])."'
";
$result = mysql_query($query) or trigger_error("SQL", E_USER_ERROR);
$query_data = mysql_fetch_row($result);
$numrows = $query_data[0];
$rows_per_page = 1;
$lastpage = ceil($numrows/$rows_per_page);
$selectie = (int)$selectie;
if ($selectie > $lastpage) {
$selectie = $lastpage;
}
if ($selectie < 1) {
$selectie = 1;
}
$limit = 'LIMIT ' .($selectie - 1) * $rows_per_page .',' .$rows_per_page;
$query = "
SELECT
id,
name,
label,
tekst,
klant,
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
FROM
klanteninfo
WHERE
klant = '".mysql_real_escape_string($_GET['klant'])."'
$limit
";
$result = mysql_query($query) or trigger_error("SQL", E_USER_ERROR);
while ($myrow = mysql_fetch_assoc($result))
{
?>
$selectie = $_GET['selectie'];
} else {
$selectie = 1;
}
$query = "SELECT
count(*)
FROM
klanteninfo
WHERE
klant = '".mysql_real_escape_string($_GET['klant'])."'
";
$result = mysql_query($query) or trigger_error("SQL", E_USER_ERROR);
$query_data = mysql_fetch_row($result);
$numrows = $query_data[0];
$rows_per_page = 1;
$lastpage = ceil($numrows/$rows_per_page);
$selectie = (int)$selectie;
if ($selectie > $lastpage) {
$selectie = $lastpage;
}
if ($selectie < 1) {
$selectie = 1;
}
$limit = 'LIMIT ' .($selectie - 1) * $rows_per_page .',' .$rows_per_page;
$query = "
SELECT
id,
name,
label,
tekst,
klant,
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
FROM
klanteninfo
WHERE
klant = '".mysql_real_escape_string($_GET['klant'])."'
$limit
";
$result = mysql_query($query) or trigger_error("SQL", E_USER_ERROR);
while ($myrow = mysql_fetch_assoc($result))
{
?>
Ik heb nu dit geprobeerd in de tweede query:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?
$query = "
SELECT
klanteninfo.id,
klanteninfo.name,
klanteninfo.label,
klanteninfo.tekst,
klanteninfo.klant,
klanten.logoname
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
FROM
klanteninfo, klanten
WHERE
klant = '".mysql_real_escape_string($_GET['klant'])."'
AND klanteninfo.klant = klanten.klant
$limit
"; ?>
$query = "
SELECT
klanteninfo.id,
klanteninfo.name,
klanteninfo.label,
klanteninfo.tekst,
klanteninfo.klant,
klanten.logoname
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
FROM
klanteninfo, klanten
WHERE
klant = '".mysql_real_escape_string($_GET['klant'])."'
AND klanteninfo.klant = klanten.klant
$limit
"; ?>
Gewijzigd op 01/01/1970 01:00:00 door David david
foutafhandeling had gebruikt) 'Klant is ambiguous'. Dat betekent dat klant in beide tabellen voor komt en het voor SQL niet duidelijk is welke nu vergeleken moet worden. Zet daarom vóór klant nog de naam van de tabel waarin vergeleken moet worden. In dit geval dus 'klanten'.
Waarschijnlijk zal er als error uitgekomen zijn (mits je een goede En vóór klatn de naam van tabel zetten?..Dat is tich dit stukje:
klanten.klant...
sory voor mijn noob gehalte :P
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
klanteninfo.id,
klanteninfo.name,
klanteninfo.label,
klanteninfo.tekst,
klanteninfo.klant,
klanten.logoname
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
FROM
klanteninfo, klanten
WHERE
klanten.klant = '".mysql_real_escape_string($_GET['klant'])."'
AND
klanteninfo.klant = klanten.klant
klanteninfo.id,
klanteninfo.name,
klanteninfo.label,
klanteninfo.tekst,
klanteninfo.klant,
klanten.logoname
DATE_FORMAT(datum, '%d-%m-%Y') AS nl_datum
FROM
klanteninfo, klanten
WHERE
klanten.klant = '".mysql_real_escape_string($_GET['klant'])."'
AND
klanteninfo.klant = klanten.klant
Dat moet 'm zijn. Overigens zou ik toch nog overwegen om i.p.v. de string 'klant' een ID van de klant te gaan gebruiken. Dan kan men die naam altijd nog veranderen, mocht men dat nodig achten.
bedoel je zoiets als hier uitgelegd?:
http://www.websitemaken.be/index.php?page=show_item&id=621
dus met primary en Foreign key..
Gewijzigd op 01/01/1970 01:00:00 door david david
CREATE TABLE `upload` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(30) NOT NULL default '',
`type` varchar(30) NOT NULL default '',
`size` int(11) NOT NULL default '0',
`path` varchar(60) NOT NULL default '',
`label` varchar(40) NOT NULL default '',
`tekst` text NOT NULL,
`datum` date NOT NULL default '0000-00-00',
`category` varchar(255) NOT NULL default '',
`klant` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
EN de KLANT LOGO's:
CREATE TABLE `klanten` (
`k_id` int(11) NOT NULL auto_increment,
`klant` varchar(40) NOT NULL default '',
`logoname` varchar(30) NOT NULL default '',
`logotype` varchar(30) NOT NULL default '',
`logosize` int(11) NOT NULL default '0',
`logopath` varchar(60) NOT NULL default '',
PRIMARY KEY (`k_id`)
En als ik nu in phpmyadmin de volgende query uitvoer:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
SELECT
id,
k_id,
logoname,
name,
label,
tekst,
upload.klant
FROM
upload, klanten
WHERE
upload.klant=klanten.klant
?>
SELECT
id,
k_id,
logoname,
name,
label,
tekst,
upload.klant
FROM
upload, klanten
WHERE
upload.klant=klanten.klant
?>
Geeft hij mooi de klanten weer + hun bijbehorende logo. Maar is dat de juiste methode?
Gewijzigd op 01/01/1970 01:00:00 door david david