3 tabellen in 1 Query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

David M

David M

20/09/2012 08:54:36
Quote Anchor link
Hi (hoop dat iemand me hiemee weer kan helpen):

Ik heb onderstaande code/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
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\" />";
            
            
            
            
        }}}
        


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

PHP hulp

05/05/2024 21:35:18
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/09/2012 09:07:07
Quote Anchor link
Misschien zo?


$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;
";
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

20/09/2012 09:27:40
Quote Anchor link
Geef even de opbouw van je tabellen, nu join je een tabel waar je verder niets mee doet.
 
David M

David M

20/09/2012 10:37:59
Quote Anchor link
Hi Ger heb het je gemail.

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 ?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

20/09/2012 12:55:50
Quote Anchor link
Dat komt door de inner join, die selecteert alleen de rijen waarvan de id ook in de andere tabel voorkomt.
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
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

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.
 
David M

David M

20/09/2012 13:07:53
Quote Anchor link
Ger, ik ga dit vanavond uitproberen! Mijn dank is groot! Ik kom er op terug.



Toevoeging op 20/09/2012 15:52:42:

Ger ik heb de query er zo ingeplaatst:

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
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>';  
            
            
        }}


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?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/09/2012 17:21:46
Quote Anchor link
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.
 
David M

David M

20/09/2012 17:24:43
Quote Anchor link
Bedankt Frank!

Ik heb het (gelukkig) allemaal voor elkaar
 



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.