• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Beta-testers gezocht voor Crypto-oefenplatform

    Syntax 29 januari 2026 om 16:11
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 19 januari 2026 om 09:34
  • Developer Gezocht

    Mikevdk 10 januari 2026 om 18:57
  • Op zoek naar de legends

    Syntax 5 januari 2026 om 13:50
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04

Marktplaats

  • 321 Nieuwe Domeinnamen December 2025

    shiga 1 januari 2026 om 10:26
  • Meerdere mafia game template te koop

    Syntax 26 december 2025 om 00:07
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05

SQL select INNER JOIN / LEFT JOIN

  • Marijn
  • 31 juli 2017 om 14:47
  • Marijn
    Beginner
    Ontvangen Reacties
    4
    Berichten
    10
    • 31 juli 2017 om 14:47
    • #1

    Goedemiddag,

    ik loop vast op het maken van tags voor een Blog post. Nu heb ik rond gekeken naar oude topics, en ik kwam er een aantal tegen van Luc over een ziekenhuis, echter is het me niet gelukt om met de kennis die daar in gedeeld werd het te bouwen(dat ligt aan mij) Excuses hiervoor.

    Ik maak gebruik van 3 tables"-" met daar in de volgende columns"*":

    - blog
    * id
    * parent_id
    * title
    * sub_title
    * quote
    * header_image
    * image_link
    * video link
    * description
    * post_date
    * num_comments

    - tags
    * id
    *tag_name

    - taxonomy
    * id
    * blog_post
    * tag_id

    Nu wilde ik de tags per blog koppelen als het id vanuit de table blog overeen komt met blogpost_id uit de Taxonomy table. Echter krijg ik een error op lijn 12 bij (INNER JOIN). Hopelijk kan iemand mij verder helpen.


    PHP
    <ul class="blog-tags-list f-left">
        <?php
    	$sql = "
    	SELECT 
    		blog.id, 
    		tags.tag_name, 
    		taxonomy.blog_post 
    	FROM 
    		blog 
    	LEFT JOIN 
    		tags
    	INNER JOIN 
    		taxonomy 
    		ON blog.id = taxonomy.blog_post"; 
    	$result = mysqli_query($db, $sql);			
    	if (!$result = $db->query($sql)) {
    	die ('There was an error running query[' . $db->error . ']');
    	}
    	while($row = mysqli_fetch_assoc($result))
    	{
    	$id = $row["id"];
    	$blog_post = $row["blog_post"];
    	$tag_name = $row["tag_name"];	
    	?>
    	<li><a href="#"><?php echo $row['tag_name'];?></a></li>
    	<?php
    	}
    	?>
    </ul>
    Toon Meer
  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 31 juli 2017 om 15:21
    • #2

    Maar de pagina waar je deze informatie ophoest, wat zou deze weer moeten geven? Wat voor doel dient deze?

    Is dit een pagina met een overzicht van blogs met bijbehorende tags?
    Is dit een pagina met een specifieke blog (in welk geval er een WHERE-conditie mist)?
    Is dit een pagina met een overzicht van tags met bijbehorende blogs?

    Je zou ook eerst een query kunnen maken waarin je de tags opslaat in een array tag-id => tag-naam.
    En vervolgens voer je een query op blogs uit waarin je de tags GROUP_CONCAT zodat je niet tig rijen per blog terugkrijgt.

    Maar hoe je dit (in code en op je scherm) vormgeeft wordt in eerste instantie bepaald door wat voor doel de pagina heeft.

    Los hiervan zul je in je JOINs aan moeten geven hoe je tabellen aan elkaar fietst. Na LEFT JOIN tags wordt waarschijnlijk een JOIN-conditie (ON a.id = b.id) verwacht want deze lijkt verplicht.

  • Marijn
    Beginner
    Ontvangen Reacties
    4
    Berichten
    10
    • 31 juli 2017 om 16:00
    • #3

    Bedankt voor uw reactie FangorN,

    ik wilde de tags op een pagina van een specifieke Blog post tonen. Dus eigenlijk links van de tekst Tags: "zie de afbeelding".

    Mijn bedoeling was om straks mijn collega's de mogelijkheid te geven om via het CMS enkele tags per blog/vlog toe te wijzen.

    De koppeling die ik nu had bedacht "correct me if i am wrong" als blog $id = $blog_post geef dan tag_name weer bij die specifieke blog.

    Maar zo als ik uit uw advies lees moet ik mij eerst maar is beter verdiepen in hoe ik ze met elkaar verbindt. Bedankt in ieder geval tot zo ver.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 31 juli 2017 om 16:10
    • #4

    Maar als je op de pagina van een specifieke blog post zit dan zal er dus op een of andere manier een blog id bekend moeten zijn.

    Als het geen probleem is om voor het ophalen van de tags een aparte query uit te voeren dan kan dit met een eenvoudige query waarbij je enkel de tags- en taxonomy-tabel gebruikt, de blogs-tabel hoef je in dat geval niet te betrekken in je query.

    Het zal dan zoiets worden als:

    SELECT tg.id, tg.tag_name
    FROM tags tg
    INNER JOIN taxonomy tx ON tx.tag_id = tg.id
    WHERE tx.blog_post = <id van huidige blog-post>

  • Marijn
    Beginner
    Ontvangen Reacties
    4
    Berichten
    10
    • 31 juli 2017 om 16:17
    • #5

    Beste FagorN,

    bedankt voor uw hulp, nu worden de tags goed weergegeven.

    PHP
    <ul class="blog-tags-list f-left">
        <?php
    	$id = intval($_GET['id']);
    	$sql = "
    	SELECT tg.id, tg.tag_name
    	FROM tags tg
    	INNER JOIN taxonomy tx ON tx.tag_id = tg.id
    	WHERE tx.blog_post = $id"; 
    	$result = mysqli_query($db, $sql);			
    	if (!$result = $db->query($sql)) {
    	die ('There was an error running query[' . $db->error . ']');
    	}
    	while($row = mysqli_fetch_assoc($result))
    	{
    	?>
    	<li><a href="#"><?php echo $row['tag_name'];?></a></li>
    	<?php
    	}
    	?>
    </ul>
    Toon Meer
  • Marijn
    Beginner
    Ontvangen Reacties
    4
    Berichten
    10
    • 4 augustus 2017 om 14:31
    • #6

    Goedemiddag,

    Op dit moment werk ik aan een product-detail pagina waar ik vanuit verschillende tables informatie wil tonen op $id. Nu loop ik op dit moment tegen het probleem aan dat ik via mijn LEFT JOIN de error: "Undefined index variable krijg".

    De tables waar ik op dit moment data wil halen:
    - products
    - productimages

    table productimages bevat de columns:
    - id
    - pimage_id
    - img
    - p_id

    Nu gaat het bij de table products goed maar de variable uit de table productimages geven de errormelding als ik ze probeer weer te geven!

    HTML
    <div class="col-md-5 col-sm-5 col-xs-12">
                                            <div class="imgs-zoom-area">
                                                <img id="zoom_03" src="<?php echo $row['img'];?>" data-zoom-image="<?php echo $row['img'];?>" alt="">
                                                <div class="row">
                                                    <div class="col-xs-12">
                                                        <div id="gallery_01" class="carousel-btn slick-arrow-3 mt-30">
                                                            <div class="p-c">
                                                                <a href="#" data-image="<?php echo $row['img'];?>" data-zoom-image="<?php echo $row['img'];?>">
                                                                    <img class="zoom_03" src="<?php echo $row['img'];?>" alt="">
                                                                </a>
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
    Toon Meer


    PHP
    <?php
    $id = intval($_GET['id']);
    $sql = "SELECT pd.id, pd.parent_id, pd.sku, pd.brand, pd.category, pd.title, pd.sub_title, pd.content, pd.price, pd.gross_price, pd.ean_code 
    FROM products pd
    LEFT JOIN productimages pi ON pd.id = pi.pimage_id
    WHERE pi.pimage_id = '$id'"; 
    $result = mysqli_query($db, $sql);			
    if (!$result = $db->query($sql)) {
    die ('There was an error running query[' . $db->error . ']');
    }
    while($row = mysqli_fetch_assoc($result))
    {
    ?>
    Toon Meer

    Bewerkt één keer, laatst door Marijn (4 augustus 2017 om 14:51).

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 4 augustus 2017 om 16:44
    • #7

    Wat is het verschil tussen pimage_id en p_id in de productimages tabel en weet je zeker dat je inderdaad wilt joinen op pimage_id (en niet iets anders, bijvoorbeeld p_id)?

    En als pimage_id inderdaad de foreign key is naar products is dat nou niet bepaald een fantastisch gekozen naam :/.

    Verder is het denk ik in het algemeen handiger om te refereren aan primary keys in je WHERE-conditie, in plaats van foreign keys, dat schept meestal wat sneller duidelijkheid over wat de query zou moeten doen.

    Dat gezegd hebbende, hoe ziet je dataset er uit, welke resultaten verwacht je die je niet krijgt?

    En van wat voor engine maken de tabellen gebruik? MyISAM? InnoDB? Als je een SHOW CREATE TABLE doet op zowel products alsook productimages, wat voor resultaten krijg je dan terug?

    En als je LEFT JOIN gebruikt dan kunnen resultaten NULL-waarden bevatten, controleer je hier ook op? Dump voor de gein (je) $row(s) eens.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design