PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Database » DB_QueryTool » Bug #2515

Adding more than one Left-Join doesn´t work properly

Details

Submitted2004-10-12 15:21 UTC
Fromskopek at mediatac dot com
Assignedquipo
StatusClosed
PackageDB_QueryTool
PHP Version4.3.6
OSWindows XP
Roadmaps(Not assigned)

Comments

[2004-10-12 15:21 UTC] skopek at mediatac dot com

Description:
------------
Version:
DB_QueryTool 0.10.1, PHP 4.3.6, MySQL 4.0.20a-nt

There is a problem with adding multiple LEFT-joins (or RIGHT-Joins) using DB_QueryTool. The resulting SQL-Statement doesn´t work properly.
Adding multiple Joins (not LEFT or RIGHT, but with WHERE!) are working perfectly instead.

Reproduce code:
---------------
$qt = new DB_QueryTool($aDSN);
//Product-Table
$qt->table = "product_data";
$qt->primaryCol = "id";
//add Joins on tables manufacturer_data and product_groups
$qt->addJoin("manufacturer_data", "product_data.manufacturer_id=manufacturer_data.id", "left");
$qt->addJoin("product_groups", "product_data.product_groups_id=product_groups.id", "left");
echo $qt->getQueryString();

Expected result:
----------------
SELECT manufacturer_data.id AS "_data_id", manufacturer_data.name AS "_data_name", manufacturer_data.description AS "_data_description", manufacturer_data.notice AS "_data_notice", manufacturer_data._deleted AS "_data__deleted", manufacturer_data._lastmodified AS "_data__lastmodified", manufacturer_data._datecreated AS "_data__datecreated", product_groups.id AS "_groups_id", product_groups.name AS "_groups_name", product_groups.description AS "_groups_description", product_groups._deleted AS "_groups__deleted", product_groups._lastmodified AS "_groups__lastmodified", product_groups._datecreated AS "_groups__datecreated", product_data.id AS "id", product_data.name AS "name", product_data.description AS "description", product_data.buy_price AS "buy_price", product_data.sell_price AS "sell_price", product_data.weight AS "weight", product_data.bulkgood AS "bulkgood", product_data.width AS "width", product_data.height AS "height", product_data.length AS "length", product_data.manufacturer_id AS "manufacturer_id", product_data.tax_class_id AS "tax_class_id", product_data.product_groups_id AS "product_groups_id", product_data.product_images_id AS "product_images_id", product_data.is_active AS "is_active", product_data._deleted AS "_deleted", product_data._lastmodified AS "_lastmodified", product_data._datecreated AS "_datecreated"
FROM product_data
LEFT JOIN manufacturer_data ON product_data.manufacturer_id = manufacturer_data.id
LEFT JOIN product_groups ON product_data.product_groups_id = product_groups.id
LIMIT 0 , 30

Actual result:
--------------
SELECT manufacturer_data.id AS "_data_id",manufacturer_data.name AS "_data_name",manufacturer_data.description AS "_data_description",manufacturer_data.notice AS "_data_notice",manufacturer_data._deleted AS "_data__deleted",manufacturer_data._lastmodified AS "_data__lastmodified",manufacturer_data._datecreated AS "_data__datecreated",product_groups.id AS "_groups_id",product_groups.name AS "_groups_name",product_groups.description AS "_groups_description",product_groups._deleted AS "_groups__deleted",product_groups._lastmodified AS "_groups__lastmodified",product_groups._datecreated AS "_groups__datecreated",product_data.id AS "id",product_data.name AS "name",product_data.description AS "description",product_data.buy_price AS "buy_price",product_data.sell_price AS "sell_price",product_data.weight AS "weight",product_data.bulkgood AS "bulkgood",product_data.width AS "width",product_data.height AS "height",product_data.length AS "length",product_data.manufacturer_id AS "manufacturer_id",product_data.tax_class_id AS "tax_class_id",product_data.product_groups_id AS "product_groups_id",product_data.product_images_id AS "product_images_id",product_data.is_active AS "is_active",product_data._deleted AS "_deleted",product_data._lastmodified AS "_lastmodified",product_data._datecreated AS "_datecreated" FROM product_data LEFT JOIN manufacturer_data ON product_data.manufacturer_id=manufacturer_data.id AND product_data.product_groups_id=product_groups.id