1

I am trying to get a result by joining two tables . but i am not getting proper result . can any one tell where i am wrong ?

here is my code

$sql = "SELECT merchant.name, keyword.name
FROM keyword 
INNER JOIN merchant
ON merchant.id=keyword.merchant_id";

And my table structurer is

keyword

1.name (keyword name)

2.merchant_id

merchant

1.id

2.name (merchant name)

the result sholud be like this

merchant name |||||| keyword name

and SQL fetch query is

while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
{

  echo "<tr><td>".$row['name']."</td><td>".$row['name']."</td>";

 }

But the output is

keyword name |||||| keyword name

enter image description here

only i am getting keyword name

can any one tell me where i am wrong . (sorry for my bad English)

Your Common Sense
  • 156,878
  • 40
  • 214
  • 345
Trend Snaps
  • 198
  • 4
  • 15

3 Answers3

2

Dont use mysql use Mysqli

you could try

$sql = "SELECT merchant.name as mname, keyword.name as kname FROM keyword INNER JOIN merchant  ON merchant.id=keyword.merchant_id";

and

echo "<tr><td>".$row['mname']."</td><td>".$row['kname']."</td>";
Community
  • 1
  • 1
Afsar
  • 3,104
  • 2
  • 25
  • 35
1

Try this

$sql = "SELECT merchant.name as m_name, keyword.name as a_name
    FROM keyword 
    INNER JOIN merchant
    ON merchant.id=keyword.merchant_id";

Then

while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) 
{

  echo "<tr><td>".$row['m_name']."</td><td>".$row['a_name']."</td>";

 }
Shanu k k
  • 1,235
  • 2
  • 18
  • 43
1

The issue arises because you are having two column in the query with same name and second one overrides first. Try this:

$sql = "SELECT merchant.name as mer_name, keyword.name as k_name  // Aliasing for column names
FROM keyword 
INNER JOIN merchant
ON merchant.id=keyword.merchant_id";

and use it like:

$row['mer_name'], $row['k_name'];
Mayank Pandeyz
  • 25,704
  • 4
  • 40
  • 59