Re: Left Join is producing duplicate results - MySQL & relational tables
| From: | Dobromir Velev | Date: | Thu, 12 Jul 2001 07:01:07 +0000 |
| Subject: | Re: Left Join is producing duplicate results - MySQL & relational tables | ||
| Groups: | php.db | ||
| Request: | Send a blank email to php-db+get-10327@lists.php.net to get a copy of this message | ||
Hi,
Did you try to use something like this.
mysql_query("SELECT DISTINCT
WLPbib.bibID,
WLPbib.title,
WLPbib.publisher,
WLPbib.publicationDate,
WLPaddress.city,
WLPaddress.state,
WLPprofile.firstName,
WLPprofile.lastName,
WLPprofile.organization,
WLPcountry.languageName
FROM ((WLPbib
LEFT JOIN WLPprofile ON WLPprofile.profileID = WLPbib.profileID)
LEFT JOIN WLPaddress ON WLPaddress.publisherID =
WLPbib.publisherID)
LEFT JOIN WLPcountry ON WLPcountry.countryID =
WLPaddress.countryID");
The other thing that may help is to rearange the order of the tables in the
FROM clause. Please check if some of the joins return more than one result -
if you have more than one address for a publisher the query will return one
row for every address.
Hope this helps
Dobromir Velev
-----Original Message-----
From: Mike Gifford <mike@openconcept.ca>
To: php-db@lists.php.net <php-db@lists.php.net>
Date: Thursday, July 12, 2001 4:31 AM
Subject: [PHP-DB] Left Join is producing duplicate results - MySQL &
relational tables
>Hello,
>
>I posted this to the general list this morning & got a couple of good
leads, but
>they weren't able to actually fix the problem, so I'm posting here to the
db list.
>
>I'm making some headway on joining three MySQL tables.
>
>However, when I run this query:
>
>mysql_query("SELECT
> WLPbib.bibID,
> WLPbib.title,
> WLPbib.publisher,
> WLPbib.publicationDate,
> WLPaddress.city,
> WLPaddress.state,
> WLPprofile.firstName,
> WLPprofile.lastName,
> WLPprofile.organization,
> WLPcountry.languageName
> FROM WLPbib
> LEFT JOIN WLPprofile ON WLPprofile.profileID = WLPbib.profileID
> LEFT JOIN WLPaddress ON WLPaddress.publisherID =
WLPbib.publisherID
> LEFT JOIN WLPcountry ON WLPcountry.countryID =
WLPaddress.countryID");
>
>I now get results in triplicate. ie. I'm getting three copies of the same
>title, firstName, organization, etc....
>
>I somehow suspected that this should be the result with LEFT JOIN, but I'm
not
>sure how to return a query without duplication.
>
>This is far better than what I had this morning (which was no response from
the
>server).
>
>Thanks. I'm new to joining tables...
>
>Someone wrote back suggesting that SELECT DISTINCT could be used to to the
job.
>
>Another person suggested that using UNIQUE(profileID) would make it look
nicer.
> I wasn't sure how to use UNIQUE with the last JOIN as it isn't directly
linked
>to WLPbib..
>
>Any suggestions would be useful.
>
>Mike
>
>--
>Mike Gifford, OpenConcept Consulting, http://openconcept.ca
>Offering everything your organization needs for an effective web site.
>Abolish Nuclear Weapons Now!: http://pgs.ca/petition/
>It is a miracle that curiosity survives formal education. - A Einstein
>
>
>--
>PHP Database Mailing List (http://www.php.net/)
>To unsubscribe, e-mail: php-db-unsubscribe@lists.php.net
>For additional commands, e-mail: php-db-help@lists.php.net
>To contact the list administrators, e-mail: php-list-admin@lists.php.net
>
>