Mehrfachdatenbanquery (MySQL)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrfachdatenbanquery (MySQL)

    Hallo Leute,

    ich sitze grade an einem Problem, und zwar mach ich eine Datenbankabfrage wo ich einen Eintrag aus einer Tabelle abfrage und die IDs aus 3 Spalten durch die verknüpften Inhalten in einer anderen Tabell ersetze. Allerdings wenn bei einem Eintrag für eine dieser Spalten keine ID gesetzt ist, wird gar nichts ausgegeben, wie kann ich dies umgehen? Hier der Code


    PHP-Code:
        $sql $db->query("
                    SELECT 
                        db01_projects.id AS realid,
                        db01_categories.name AS catname, 
                        db01_industries.name AS industryname, 
                        db01_projects.navigation_title AS navititle, 
                        db01_brands.name AS brandname, 
                        db01_subbrands.name AS subbrandname, 
                        db01_categories.*, db01_industries.*, db01_projects.*, db01_brands.*, db01_subbrands.*
                    FROM db01_projects, db01_categories, db01_industries, db01_brands, db01_subbrands 
                    WHERE 
                        db01_projects.id = '"
    .$projectID."' 
                        AND db01_categories.id = db01_projects.catid 
                        AND db01_industries.id = db01_projects.industryid 
                        AND db01_brands.id = db01_projects.brandid 
                        AND db01_subbrands.id = db01_projects.subbrandid
                    "
    ); 
    An diesem Beispiel, wenn z.B. in db01_projects.catid kein Wert angegeben ist, kann er natürlich auch keinen Eintrag in der db01_categories finden. Aber anstatt einfach diesen Wert leer zu lassen, gibt er auch die übrigen Daten nicht aus. Was kann man da machen?

    Danke & Gruß, Daniel

  • #2
    Verwende einen LEFT JOIN!

    Kommentar


    • #3
      LEFT JOIN

      Kommentar


      • #4
        Hey, Danke für den Tipp mit LEFT JOIN, das funktioniert soweit super.
        Jetzt habe ich allerdings folgendes Problem, falls kein Eintrag dazu vorhanden ist, werden die anderen Felder schön gefüllt, wunderbar, aber die Felder wo keine Einträge vorhanden sind werden einfach mit dem ersten Eintrag aus der Tabelle gefüllt und nicht wie gewünscht mit NULL

        Hier der Code:

        PHP-Code:
        $sql $db->query("
                        SELECT 
                            projects.id AS realid,
                            db01_categories.name AS catname, 
                            db01_industries.name AS industryname, 
                            projects.navigation_title AS navititle, 
                            db01_brands.name AS brandname, 
                            db01_subbrands.name AS subbrandname, 
                            db01_categories.*, db01_industries.*, projects.*, db01_brands.*, db01_subbrands.*
                        FROM db01_projects as projects, db01_categories, db01_industries, db01_brands, db01_subbrands 
                        LEFT JOIN db01_categories AS categories ON projects.catid=categories.id
                        LEFT JOIN db01_industries AS industries ON projects.industryid=industries.id
                        LEFT JOIN db01_brands AS brands ON projects.brandid=brands.id
                        LEFT JOIN db01_subbrands AS subbrands ON projects.subbrandid=subbrands.id
                        WHERE 
                            projects.id = '"
        .$projectID."' 
                        "
        ); 

        Kommentar


        • #5
          Entweder du joinst eine Relation in der FROM-Klausel dazu oder per LEFT JOIN. Beides zugleich ist Käse.

          Kommentar


          • #6
            Das wars! Danke !!! So funktionierts jetzt:


            PHP-Code:
            $sql $db->query("
                            SELECT 
                                projects.id AS realid,
                                categories.name AS catname, 
                                industries.name AS industryname, 
                                projects.navigation_title AS navititle, 
                                brands.name AS brandname, 
                                subbrands.name AS subbrandname, 
                                projects.*
                            FROM db01_projects as projects
                            LEFT JOIN db01_categories AS categories ON projects.catid=categories.id
                            LEFT JOIN db01_industries AS industries ON projects.industryid=industries.id
                            LEFT JOIN db01_brands AS brands ON projects.brandid=brands.id
                            LEFT JOIN db01_subbrands AS subbrands ON projects.subbrandid=subbrands.id
                            WHERE 
                                projects.id = '"
            .$projectID."' 
                            "
            ); 

            Kommentar

            Lädt...
            X