Unix Technical Forum

Re: Having trouble with left join

This is a discussion on Re: Having trouble with left join within the MySQL forums, part of the Database Server Software category; --> On Mar 28, 5:38 am, Jerry Stuckle <jstuck...@attglobal.net> wrote: > chadlupkes wrote: > > On Mar 27, 8:24 am, ...


Go Back   Unix Technical Forum > Database Server Software > MySQL

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 02-28-2008, 09:30 AM
chadlupkes
 
Posts: n/a
Default Re: Having trouble with left join

On Mar 28, 5:38 am, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> chadlupkes wrote:
> > On Mar 27, 8:24 am, Toby A Inkster <usenet200...@tobyinkster.co.uk>
> > wrote:
> >> chadlupkes wrote:
> >>> I'm getting NULLs where there shouldn't be.
> >> To determine that, we'd need to see some of the data.

>
> >>> king_precinct
> >> You've not given us a schema for this table.

>
> >> --
> >> Toby A Inkster BSc (Hons) ARCS
> >> Contact Me ~http://tobyinkster.co.uk/contact
> >> Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux

>
> >> * = I'm getting there!

>

Here are the tables:

king_precinct

Field Type Null Key Default Extra
id smallint(6) PRI NULL auto_increment
precinct_number int(11) 0
precinct_name varchar(20) MUL
countydist smallint(6) 0
congdist smallint(6) 0
legdist smallint(6) 0

"precinct_name" is the name of the precinct, not the PCO. That's in
the next table.

pcolist
Field Type Null Key Default Extra
id smallint(6) PRI NULL auto_increment
precinct int(11) 0
pctname varchar(15)
area varchar(4)
legdist smallint(6) 0
countydist smallint(6) 0
congdist smallint(6) 0
name varchar(50)
email varchar(50) MUL
private tinyint(1) 0
type varchar(5)
> >
> > And since this is a PHP forum, which Jerry reminded me of, here is the
> > code I'm trying to get to work:
> >
> > echo('<html>
> > <head>
> > <title>Precincts in King County</title>
> > </head>
> > <body>
> > <table border="1">
> > <tr>
> > <th>Precinct Number</th>
> > <th>Precinct Name</th>
> > <th>County Council District</th>
> > <th>Congressional District</th>
> > <th>Legislative District</th>
> > <th>PCO Name</th>
> > <th>PCO Type</th>
> > </tr>
> > ');
> > $link_id = db_connect('wa46dems_data');
> > $result = mysql_query("SELECT king_precinct.precinct_number AS precinct_number, king_precinct.precinct_name AS precinct_name, king_precinct.legdist AS legdist, king_precinct.countydist AS countydist, king_precinct.congdist AS congdist, pcolist.name AS name, pcolist.type AS type
> > FROM king_precinct LEFT JOIN pcolist
> > ON king_precinct.precinct_number = pcolist.precinct
> > ORDER BY precinct_name", $link_id);
> > while($pct_data = mysql_fetch_array($result)) {
> > $precinct_number = $pct_data["precinct_number"];
> > $precinct_name = $pct_data["precinct_name"];
> > $precinct_cc = $pct_data["countydist"];
> > $precinct_cd = $pct_data["congdist"];
> > $precinct_ld = $pct_data["legdist"];
> > $precinct_pco_name = $query_data["name"];
> > $precinct_pco_email = $query_data["email"];
> > $precinct_pco_private = $query_data["private"];
> > $precinct_pco_type = $query_data["type"];
> > echo('
> > <tr>
> > <td>'.$precinct_number.'</td>
> > <td><a href="precinctmap.php?pct='.$precinct_number.'">'.
> > $precinct_name.'</a></td>
> > <td>'.$precinct_cc.'</td>
> > <td>'.$precinct_cd.'</td>
> > <td>'.$precinct_ld.'</td>
> > <td>'.$precinct_pco_name.'</td>
> > <td>'.$precinct_pco_type.'</td>
> > </tr>');
> > }
> > echo('</table>');
> >

>
> (Top posting fixed)
>
> PHP isn't going to affect whether your SQL code returns null values or
> not. If a particular row contains a null, you'll get a null back from
> your sql. And since you're doing a left join, if there is no matching
> row in pcolist you will get nulls for all values there.
>
> And you're still asking about the SQL, not PHP. You need to be asking
> in a SQL newsgroup - you'll get much better help on your SQL question.
>
> And please don't top post.
>
> --
> ==================
> Remove the "x" from my email address
> Jerry Stuckle
> JDS Computer Training Corp.
> jstuck...@attglobal.net
> ==================


I think it's something to do with my PHP code, because when I run the
SQL query within mysql, it works exactly how I want it to. I think
I'm doing something wrong in the code, but I just can't see it.

You can see the results that are coming out of the query here:

http://46dems.com/kcdems/precinctinfo_html.php

I'll copy the mysql group to see if anyone there has ideas that might
work.

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 02-28-2008, 09:30 AM
Jerry Stuckle
 
Posts: n/a
Default Re: Having trouble with left join

chadlupkes wrote:
> On Mar 28, 5:38 am, Jerry Stuckle <jstuck...@attglobal.net> wrote:
>> chadlupkes wrote:
>>> On Mar 27, 8:24 am, Toby A Inkster <usenet200...@tobyinkster.co.uk>
>>> wrote:
>>>> chadlupkes wrote:
>>>>> I'm getting NULLs where there shouldn't be.
>>>> To determine that, we'd need to see some of the data.
>>>>> king_precinct
>>>> You've not given us a schema for this table.
>>>> --
>>>> Toby A Inkster BSc (Hons) ARCS
>>>> Contact Me ~http://tobyinkster.co.uk/contact
>>>> Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux
>>>> * = I'm getting there!

> Here are the tables:
>
> king_precinct
>
> Field Type Null Key Default Extra
> id smallint(6) PRI NULL auto_increment
> precinct_number int(11) 0
> precinct_name varchar(20) MUL
> countydist smallint(6) 0
> congdist smallint(6) 0
> legdist smallint(6) 0
>
> "precinct_name" is the name of the precinct, not the PCO. That's in
> the next table.
>
> pcolist
> Field Type Null Key Default Extra
> id smallint(6) PRI NULL auto_increment
> precinct int(11) 0
> pctname varchar(15)
> area varchar(4)
> legdist smallint(6) 0
> countydist smallint(6) 0
> congdist smallint(6) 0
> name varchar(50)
> email varchar(50) MUL
> private tinyint(1) 0
> type varchar(5)
>> >
>> > And since this is a PHP forum, which Jerry reminded me of, here is the
>> > code I'm trying to get to work:
>> >
>> > echo('<html>
>> > <head>
>> > <title>Precincts in King County</title>
>> > </head>
>> > <body>
>> > <table border="1">
>> > <tr>
>> > <th>Precinct Number</th>
>> > <th>Precinct Name</th>
>> > <th>County Council District</th>
>> > <th>Congressional District</th>
>> > <th>Legislative District</th>
>> > <th>PCO Name</th>
>> > <th>PCO Type</th>
>> > </tr>
>> > ');
>> > $link_id = db_connect('wa46dems_data');
>> > $result = mysql_query("SELECT king_precinct.precinct_number AS precinct_number, king_precinct.precinct_name AS precinct_name, king_precinct.legdist AS legdist, king_precinct.countydist AS countydist, king_precinct.congdist AS congdist, pcolist.name AS name, pcolist.type AS type
>> > FROM king_precinct LEFT JOIN pcolist
>> > ON king_precinct.precinct_number = pcolist.precinct
>> > ORDER BY precinct_name", $link_id);
>> > while($pct_data = mysql_fetch_array($result)) {
>> > $precinct_number = $pct_data["precinct_number"];
>> > $precinct_name = $pct_data["precinct_name"];
>> > $precinct_cc = $pct_data["countydist"];
>> > $precinct_cd = $pct_data["congdist"];
>> > $precinct_ld = $pct_data["legdist"];
>> > $precinct_pco_name = $query_data["name"];
>> > $precinct_pco_email = $query_data["email"];
>> > $precinct_pco_private = $query_data["private"];
>> > $precinct_pco_type = $query_data["type"];
>> > echo('
>> > <tr>
>> > <td>'.$precinct_number.'</td>
>> > <td><a href="precinctmap.php?pct='.$precinct_number.'">'.
>> > $precinct_name.'</a></td>
>> > <td>'.$precinct_cc.'</td>
>> > <td>'.$precinct_cd.'</td>
>> > <td>'.$precinct_ld.'</td>
>> > <td>'.$precinct_pco_name.'</td>
>> > <td>'.$precinct_pco_type.'</td>
>> > </tr>');
>> > }
>> > echo('</table>');
>> >

>>
>> (Top posting fixed)
>>
>> PHP isn't going to affect whether your SQL code returns null values or
>> not. If a particular row contains a null, you'll get a null back from
>> your sql. And since you're doing a left join, if there is no matching
>> row in pcolist you will get nulls for all values there.
>>
>> And you're still asking about the SQL, not PHP. You need to be asking
>> in a SQL newsgroup - you'll get much better help on your SQL question.
>>
>> And please don't top post.
>>
>> --
>> ==================
>> Remove the "x" from my email address
>> Jerry Stuckle
>> JDS Computer Training Corp.
>> jstuck...@attglobal.net
>> ==================

>
> I think it's something to do with my PHP code, because when I run the
> SQL query within mysql, it works exactly how I want it to. I think
> I'm doing something wrong in the code, but I just can't see it.
>
> You can see the results that are coming out of the query here:
>
> http://46dems.com/kcdems/precinctinfo_html.php
>
> I'll copy the mysql group to see if anyone there has ideas that might
> work.
>


Chad,

I just took another look at this (actually in the comp.databases.mysql
group) and your output. Your problem is right here:

$precinct_pco_name = $query_data["name"];
$precinct_pco_email = $query_data["email"];
$precinct_pco_private = $query_data["private"];
$precinct_pco_type = $query_data["type"];

The problem is your result is in $pct_data from:

while($pct_data = mysql_fetch_array($result))

A suggestion - any time you have problems like this, check your PHP
error log (usually the webserver's error log) or add the following to
the beginning of your script:

error_reporting(E_ALL);
ini_set("display_errors", "1");

This will display all errors, warnings, notices, etc. You should have
gotten a notice on the above statements (missing index in the array - if
it is even an array);

So I was wrong and it was a PHP error - but something like when you have
both mysql and php involved it never hurts to post to both groups.

And actually seeing the output helped a lot.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 02-28-2008, 09:30 AM
Toby A Inkster
 
Posts: n/a
Default Re: Having trouble with left join

chadlupkes wrote:

> I think it's something to do with my PHP code, because when I run the
> SQL query within mysql, it works exactly how I want it to.


Permissions?

Are you running the queries under the same set of permissions in both
cases?

--
Toby A Inkster BSc (Hons) ARCS
Contact Me ~ http://tobyinkster.co.uk/contact
Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux

* = I'm getting there!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 02-28-2008, 09:31 AM
chadlupkes
 
Posts: n/a
Default Re: Having trouble with left join

On Mar 29, 8:13 am, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> chadlupkes wrote:
> > On Mar 28, 5:38 am, Jerry Stuckle <jstuck...@attglobal.net> wrote:
> >> chadlupkes wrote:
> >>> On Mar 27, 8:24 am, Toby A Inkster <usenet200...@tobyinkster.co.uk>
> >>> wrote:
> >>>> chadlupkes wrote:
> >>>>> I'm getting NULLs where there shouldn't be.
> >>>> To determine that, we'd need to see some of the data.
> >>>>> king_precinct
> >>>> You've not given us a schema for this table.
> >>>> --
> >>>> Toby A Inkster BSc (Hons) ARCS
> >>>> Contact Me ~http://tobyinkster.co.uk/contact
> >>>> Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux
> >>>> * = I'm getting there!

> > Here are the tables:

>
> > king_precinct

>
> > Field Type Null Key Default Extra
> > id smallint(6) PRI NULL auto_increment
> > precinct_number int(11) 0
> > precinct_name varchar(20) MUL
> > countydist smallint(6) 0
> > congdist smallint(6) 0
> > legdist smallint(6) 0

>
> > "precinct_name" is the name of the precinct, not the PCO. That's in
> > the next table.

>
> > pcolist
> > Field Type Null Key Default Extra
> > id smallint(6) PRI NULL auto_increment
> > precinct int(11) 0
> > pctname varchar(15)
> > area varchar(4)
> > legdist smallint(6) 0
> > countydist smallint(6) 0
> > congdist smallint(6) 0
> > name varchar(50)
> > email varchar(50) MUL
> > private tinyint(1) 0
> > type varchar(5)

>
> >> > And since this is a PHP forum, which Jerry reminded me of, here is the
> >> > code I'm trying to get to work:

>
> >> > echo('<html>
> >> > <head>
> >> > <title>Precincts in King County</title>
> >> > </head>
> >> > <body>
> >> > <table border="1">
> >> > <tr>
> >> > <th>Precinct Number</th>
> >> > <th>Precinct Name</th>
> >> > <th>County Council District</th>
> >> > <th>Congressional District</th>
> >> > <th>Legislative District</th>
> >> > <th>PCO Name</th>
> >> > <th>PCO Type</th>
> >> > </tr>
> >> > ');
> >> > $link_id = db_connect('wa46dems_data');
> >> > $result = mysql_query("SELECT king_precinct.precinct_number AS precinct_number, king_precinct.precinct_name AS precinct_name, king_precinct.legdist AS legdist, king_precinct.countydist AS countydist, king_precinct.congdist AS congdist, pcolist.name AS name, pcolist.type AS type
> >> > FROM king_precinct LEFT JOIN pcolist
> >> > ON king_precinct.precinct_number = pcolist.precinct
> >> > ORDER BY precinct_name", $link_id);
> >> > while($pct_data = mysql_fetch_array($result)) {
> >> > $precinct_number = $pct_data["precinct_number"];
> >> > $precinct_name = $pct_data["precinct_name"];
> >> > $precinct_cc = $pct_data["countydist"];
> >> > $precinct_cd = $pct_data["congdist"];
> >> > $precinct_ld = $pct_data["legdist"];
> >> > $precinct_pco_name = $query_data["name"];
> >> > $precinct_pco_email = $query_data["email"];
> >> > $precinct_pco_private = $query_data["private"];
> >> > $precinct_pco_type = $query_data["type"];
> >> > echo('
> >> > <tr>
> >> > <td>'.$precinct_number.'</td>
> >> > <td><a href="precinctmap.php?pct='.$precinct_number.'">'.
> >> > $precinct_name.'</a></td>
> >> > <td>'.$precinct_cc.'</td>
> >> > <td>'.$precinct_cd.'</td>
> >> > <td>'.$precinct_ld.'</td>
> >> > <td>'.$precinct_pco_name.'</td>
> >> > <td>'.$precinct_pco_type.'</td>
> >> > </tr>');
> >> > }
> >> > echo('</table>');

>
> >> (Top posting fixed)

>
> >> PHP isn't going to affect whether your SQL code returns null values or
> >> not. If a particular row contains a null, you'll get a null back from
> >> your sql. And since you're doing a left join, if there is no matching
> >> row in pcolist you will get nulls for all values there.

>
> >> And you're still asking about the SQL, not PHP. You need to be asking
> >> in a SQL newsgroup - you'll get much better help on your SQL question.

>
> >> And please don't top post.

>
> >> --
> >> ==================
> >> Remove the "x" from my email address
> >> Jerry Stuckle
> >> JDS Computer Training Corp.
> >> jstuck...@attglobal.net
> >> ==================

>
> > I think it's something to do with my PHP code, because when I run the
> > SQL query within mysql, it works exactly how I want it to. I think
> > I'm doing something wrong in the code, but I just can't see it.

>
> > You can see the results that are coming out of the query here:

>
> >http://46dems.com/kcdems/precinctinfo_html.php

>
> > I'll copy the mysql group to see if anyone there has ideas that might
> > work.

>
> Chad,
>
> I just took another look at this (actually in the comp.databases.mysql
> group) and your output. Your problem is right here:
>
> $precinct_pco_name = $query_data["name"];
> $precinct_pco_email = $query_data["email"];
> $precinct_pco_private = $query_data["private"];
> $precinct_pco_type = $query_data["type"];
>
> The problem is your result is in $pct_data from:
>
> while($pct_data = mysql_fetch_array($result))
>
> A suggestion - any time you have problems like this, check your PHP
> error log (usually the webserver's error log) or add the following to
> the beginning of your script:
>
> error_reporting(E_ALL);
> ini_set("display_errors", "1");
>
> This will display all errors, warnings, notices, etc. You should have
> gotten a notice on the above statements (missing index in the array - if
> it is even an array);
>
> So I was wrong and it was a PHP error - but something like when you have
> both mysql and php involved it never hurts to post to both groups.
>
> And actually seeing the output helped a lot.
>
> --
> ==================
> Remove the "x" from my email address
> Jerry Stuckle
> JDS Computer Training Corp.
> jstuck...@attglobal.net
> ==================


Isn't it true that 90% of errors like this just need an extra pair of
eyes? Thanks, Jerry. I really appreciate your help.

http://46dems.com/kcdems/precinctinfo_html.php

Chad

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 12:19 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com