3 tabellen in 1 Query
Ik heb onderstaande code/query:
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
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
$sql="SELECT
kl.menu_naam,
kl.MENU_ID
FROM
tbl_menus AS kl
INNER JOIN
tbl_MPA AS za
ON
za.MENU_ID = kl.MENU_ID
AND
CATEGORIE_ID = ".$record['CATEGORIE_ID']."
";
$result_02= mysql_query($sql);
while ($record_02= mysql_fetch_array($result_02)){
echo '<ul>';
echo "<li style=\"color:#d90000; font-size:12px;\">".$record_02["menu_naam"]."</li>";
echo '</ul>';
$sql="SELECT * FROM tbl_menu_afbeeldingen WHERE MENU_ID=".$record_02['MENU_ID'];
$result_04=mysql_query($sql);
while($record_img_prod=mysql_fetch_array($result_04)){
$sitepad_img_produkten="modules/images/producten/";
$images_produkten=$sitepad_img_produkten.$record_img_prod["MENU_AFB_ID"].$record_img_prod["bestand_type_naam_ma"];
echo "<img src=\"$images_produkten\" height=\"40\" width=\"50\" />";
}}}
kl.menu_naam,
kl.MENU_ID
FROM
tbl_menus AS kl
INNER JOIN
tbl_MPA AS za
ON
za.MENU_ID = kl.MENU_ID
AND
CATEGORIE_ID = ".$record['CATEGORIE_ID']."
";
$result_02= mysql_query($sql);
while ($record_02= mysql_fetch_array($result_02)){
echo '<ul>';
echo "<li style=\"color:#d90000; font-size:12px;\">".$record_02["menu_naam"]."</li>";
echo '</ul>';
$sql="SELECT * FROM tbl_menu_afbeeldingen WHERE MENU_ID=".$record_02['MENU_ID'];
$result_04=mysql_query($sql);
while($record_img_prod=mysql_fetch_array($result_04)){
$sitepad_img_produkten="modules/images/producten/";
$images_produkten=$sitepad_img_produkten.$record_img_prod["MENU_AFB_ID"].$record_img_prod["bestand_type_naam_ma"];
echo "<img src=\"$images_produkten\" height=\"40\" width=\"50\" />";
}}}
Het werkt wel, maar zou graag de query van de afbeelding ( $sql="SELECT * FROM tbl_menu_afbeeldingen WHERE MENU_ID=".$record_02['MENU_ID'];) in dezelefde Query als bovenstaand willen voegen, zodat er maar 1 Query ontstaat......
met vriendelijke groet,
David
$sql="SELECT
kl.menu_naam,
kl.MENU_ID
FROM
tbl_menu_afbeeldingen AS afb, tbl_menus AS kl
INNER JOIN
tbl_MPA AS za
ON
za.MENU_ID = kl.MENU_ID
AND
CATEGORIE_ID = ".$record['CATEGORIE_ID']."
WHERE
afb.MENU_ID = kl.MENU_ID;
";
Geef even de opbouw van je tabellen, nu join je een tabel waar je verder niets mee doet.
Toevoeging op 20/09/2012 11:10:18:
ehhh gemaild.
Toevoeging op 20/09/2012 11:27:29:
Frank die van jou werkt, alleen als bepaalde produckten geen plaatje hebben (verwijzing naar een afbeelding) laat de uitlezen van de query niets zien....
misschien hier geen mysql_fetch_array ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT
mn.menu_naam,
mn.menu_id,
img.menu_afb_id,
img.bestand_type_naam_ma
FROM
(SELECT
menu_id
FROM
tbl_MPA
WHERE
aanbieder_id = 1
) AS za
LEFT JOIN
tbl_menus AS mn
ON
za.menu_id = mn.menu_id
LEFT JOIN
tbl_menu_afbeeldingen AS img
za.menu_id =img.menu_id
WHERE
mn.categorie_id = 12; --dit is dus dynamisch
mn.menu_naam,
mn.menu_id,
img.menu_afb_id,
img.bestand_type_naam_ma
FROM
(SELECT
menu_id
FROM
tbl_MPA
WHERE
aanbieder_id = 1
) AS za
LEFT JOIN
tbl_menus AS mn
ON
za.menu_id = mn.menu_id
LEFT JOIN
tbl_menu_afbeeldingen AS img
za.menu_id =img.menu_id
WHERE
mn.categorie_id = 12; --dit is dus dynamisch
Maar de tussen de afbeeldingen tabel en de menu tabel is volgens mij een 1-1 relatie, want ik neem aan dat per menu item maar één afbeelding mogelijk is, dus zou je dit in één tabel kunnen doen.
Overigens zou ik gewoon iedere aanbieder zijn eigen menuitems en categorien laten bepalen.
Over koppeltabellen:
In principe heeft een koppeltabel maar 2 kolommen, nl de primary keys van de tabellen die je koppelt. In de koppeltabel maak je die 2 kolommen tezamen de primary key.
Toevoeging op 20/09/2012 15:52:42:
Ger ik heb de query er zo ingeplaatst:
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
56
57
58
59
60
61
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
56
57
58
59
60
61
$_SESSION["aanbieder"]="1";
$sql="SELECT
kl.CATEGORIE_ID,
kl.categorie
FROM
tbl_categorieen AS kl
INNER JOIN
tbl_CPA AS za
ON
za.CATEGORIE_ID = kl.CATEGORIE_ID
AND
AANBIEDER_ID = " . $_SESSION['aanbieder'] ."";
$result= mysql_query($sql);
while ($record= mysql_fetch_array($result)){
echo $record["categorie"]."<br>";
$sql="SELECT
mn.menu_naam,
mn.MENU_ID,
img.MENU_AFB_ID,
img.bestand_type_naam_ma
FROM
(SELECT
MENU_ID
FROM
tbl_MPA
WHERE
AANBIEDER_ID = " . $_SESSION['aanbieder'] ."
) AS za
LEFT JOIN
tbl_menus AS mn
ON
za.MENU_ID = mn.MENU_ID
LEFT JOIN
tbl_menu_afbeeldingen AS img
za.MENU_ID =img.MENU_ID
WHERE
mn.CATEGORIE_ID = ".$record["CATEGORIE_ID"]."";
$result_02= mysql_query($sql);
while ($record_02= mysql_fetch_array($result_02)){
$sitepad_img_produkten="modules/images/producten/";
$images_produkten=$sitepad_img_produkten.$record_02["MENU_AFB_ID"].$record_02["bestand_type_naam_ma"];
echo '<ul>';
echo "<li style=\"color:#d90000; font-size:12px;\">".$record_02["MENU_ID"]."</li>";
echo "<li style=\"color:#d90000; font-size:12px;\">".$record_02["menu_naam"]."</li>";
echo "<li><img src=\"$images_produkten\" height=\"40\" width=\"50\" /></li>";
echo '</ul>';
}}
$sql="SELECT
kl.CATEGORIE_ID,
kl.categorie
FROM
tbl_categorieen AS kl
INNER JOIN
tbl_CPA AS za
ON
za.CATEGORIE_ID = kl.CATEGORIE_ID
AND
AANBIEDER_ID = " . $_SESSION['aanbieder'] ."";
$result= mysql_query($sql);
while ($record= mysql_fetch_array($result)){
echo $record["categorie"]."<br>";
$sql="SELECT
mn.menu_naam,
mn.MENU_ID,
img.MENU_AFB_ID,
img.bestand_type_naam_ma
FROM
(SELECT
MENU_ID
FROM
tbl_MPA
WHERE
AANBIEDER_ID = " . $_SESSION['aanbieder'] ."
) AS za
LEFT JOIN
tbl_menus AS mn
ON
za.MENU_ID = mn.MENU_ID
LEFT JOIN
tbl_menu_afbeeldingen AS img
za.MENU_ID =img.MENU_ID
WHERE
mn.CATEGORIE_ID = ".$record["CATEGORIE_ID"]."";
$result_02= mysql_query($sql);
while ($record_02= mysql_fetch_array($result_02)){
$sitepad_img_produkten="modules/images/producten/";
$images_produkten=$sitepad_img_produkten.$record_02["MENU_AFB_ID"].$record_02["bestand_type_naam_ma"];
echo '<ul>';
echo "<li style=\"color:#d90000; font-size:12px;\">".$record_02["MENU_ID"]."</li>";
echo "<li style=\"color:#d90000; font-size:12px;\">".$record_02["menu_naam"]."</li>";
echo "<li><img src=\"$images_produkten\" height=\"40\" width=\"50\" /></li>";
echo '</ul>';
}}
Maar krijg het nog niet aan de praat, geeft een foutmelding...... zie jij wat ik fout doe?
Toevoeging op 20/09/2012 16:09:09:
Ook in phpmyadmin lukt het me niet.....
Toevoeging op 20/09/2012 16:24:50:
Aha ON vergeten (na LEFT JOIN
tbl_menu_afbeeldingen AS img): Dus nu wordt de vraag anders. Als er geen image is....wil ik niets laten zien en niet dat er lege plaats is. Kan dit?
Dat kan. Je kan met phpMyAdmin ook simpel een standaard waarde instellen voor een kolom/veld. stel dat je de standaardwaarde instelt op "noimage" dan kun je met een simpel if($image == "noimage") ... else ... de output aanpassen.
Ik heb het (gelukkig) allemaal voor elkaar