Join
Dit zijn mijn tabllen:
CREATE TABLE `match_item` (
`id` int(11) NOT NULL auto_increment,
`merk` varchar(100) default NULL,
`type` varchar(100) default NULL,
`bouwjaar` varchar(100) default NULL,
`kmstand` varchar(100) default NULL,
`kleur` varchar(100) default NULL,
`wbkwar` varchar(100) default NULL,
`brandstof` varchar(100) default NULL,
`bijzonder` varchar(100) default NULL,
`prijs` varchar(100) default NULL,
PRIMARY KEY (`id`)
CREATE TABLE `match_item_image` (
`id` int(11) NOT NULL auto_increment,
`item_id` bigint(11) default NULL,
`image` varchar(255) default NULL,
PRIMARY KEY (`id`)
Hij plaatst dus de plaatjes en informatie die bij de plaatjes hoort apart. Nu wil ik een overzichtje maken waar het eerste plaatje uit match_item_image komt en de informatie uit match_item. Ik krijg niet voor elkaar. Kan iemand helpen om in de goeie richting te komen?
Wat heb je al geprobeerd?
ELECT
*
FROM
match_item
JOIN match_item_image ON id = item_id
WHERE
iten_id < 1
Die foutmelding wordt veroorzaakt omdat er al een gelijknamig veld in je result terrecht komt.
Gewijzigd op 25/11/2011 01:31:21 door - Ariën -
SELECT
*
FROM
match_item
JOIN match_item_image ON match_item.id = match_item_image.item_id
heb met WHERE item_id < 1 geprobeerd alleen dan laat hij alle plaatje met item_id 1 zien
Waarom selecteer je wederom 'alles'?
FROM match_item
JOIN match_item_image ON match_item.id = match_item_image.item_id
WHERE match_item_image.item_id < 2
Dit werkt ook wel maar dan krijg ik als nog een hele lijst met alle plaatjes. de item_id word niet gelinkt aan de id van match_item. Misschien komt dit door de array waar ik hem inplaats?
Gewijzigd op 25/11/2011 02:36:34 door Emiel de Beer
"WHERE match_item_image.item_id < 2"
de where clause op de eerste tabel toe te passen
"WHERE match_item.id < 2".
Gewijzigd op 25/11/2011 08:51:20 door Stephan Dorst
Gewijzigd op 25/11/2011 09:03:09 door Emiel de Beer
Hoeveel items heb je in de DB, hoeveel plaatjes (en hoeveel normaal gesproken per item) en hoeveel krijg je eruit als je verschillende opties in je where clause opneemt. < 2, = 2 etc?
Code (php)
1
2
3
4
5
2
3
4
5
SELECT m.merk, m.type, m.bouwjaar, p.image
FROM match_item AS m
LEFT JOIN match_item_image AS p
ON m.id = p.item_id
WHERE m.id = 1
FROM match_item AS m
LEFT JOIN match_item_image AS p
ON m.id = p.item_id
WHERE m.id = 1
Met een left join voorkom je dat als er geen image bij een item is dit wordt overgeslagen
Gewijzigd op 25/11/2011 12:22:16 door Ger van Steenderen
Toevoeging op 25/11/2011 14:06:37:
Helaas weer niet! hij laat alsnog alle plaatjes zien met de info erbij. ik twijfel nu of het niet aan mijn array ligt. Voor de zekerheid de hele code.
dit is het resultaat klik
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
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
<?php
include("admin/config.php");
//Gegevens uit MySQL halen
$data = mysql_query("SELECT m.merk, m.type, m.bouwjaar, p.image
FROM match_item AS m
LEFT JOIN match_item_image AS p
ON m.id = p.item_id
WHERE m.id = 1
") or die(mysql_error());
//array voor een 1 auto
while($info = mysql_fetch_array( $data ))
{
?>
<table width="750" height="75">
<tr>
<td height="75" width="120" rowspan="2"><?php Print "<img src=/admin/images/".$info['image'] . " height='75' width='120'>"; ?></td>
<td height="25" width="630" Valign="top"><?php Print " ".$info['merk'] . " ".$info['type'] . " "; ?></td>
</tr>
<tr>
<td height="50" width="630" Valign="top">info</td>
</tr>
</table>
<?php } ?>
include("admin/config.php");
//Gegevens uit MySQL halen
$data = mysql_query("SELECT m.merk, m.type, m.bouwjaar, p.image
FROM match_item AS m
LEFT JOIN match_item_image AS p
ON m.id = p.item_id
WHERE m.id = 1
") or die(mysql_error());
//array voor een 1 auto
while($info = mysql_fetch_array( $data ))
{
?>
<table width="750" height="75">
<tr>
<td height="75" width="120" rowspan="2"><?php Print "<img src=/admin/images/".$info['image'] . " height='75' width='120'>"; ?></td>
<td height="25" width="630" Valign="top"><?php Print " ".$info['merk'] . " ".$info['type'] . " "; ?></td>
</tr>
<tr>
<td height="50" width="630" Valign="top">info</td>
</tr>
</table>
<?php } ?>
Toevoeging op 26/11/2011 01:32:03:
Heb het eindelijk voor elkaar!!!
Dit is hem geworden uiteindelijk:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
//Gegevens uit MySQL halen
$data = mysql_query("SELECT m.merk, m.type, m.bouwjaar, p.image
FROM match_item AS m
LEFT JOIN match_item_image AS p
ON m.id = p.item_id
GROUP BY p.item_id ORDER BY m.id
$data = mysql_query("SELECT m.merk, m.type, m.bouwjaar, p.image
FROM match_item AS m
LEFT JOIN match_item_image AS p
ON m.id = p.item_id
GROUP BY p.item_id ORDER BY m.id
Gewijzigd op 25/11/2011 14:20:00 door Emiel de Beer