从2个表中获取数据并在一个查询中创建表

时间:2017-07-20 11:03:49

标签: php mysql

我有两个MySQL表:

offers:

  id   |   rid   |    name 
------------------------------
  1    |  1234   |    mary

  2    |  1235   |    john

  3    |  5342   |    liam

geo_in_off:

offer_id   |   geo_id   
------------------------------
   1       |  1234  
   2       |  1235   
   3       |  5342   

我需要在我的网站上制作一张表格,如:

1(number) | 1234(rid) | name(name) | 1(geo_id)

但是我遇到了麻烦。

我的代码是:

require('../config.php');
echo "<table class=\"offer-table\">";
echo "<tr><th id=\"off_col_num\">№</th><th id=\"off_col_id\">offer ID</th><th id=\"off_col_name\">Название</th><th id=\"off_col_geo\">Geo</th></tr>";
$i = 1;
$sql ="SELECT * FROM `offers` ORDER BY `rid` JOIN geo_in_off ON geo_in_off.id = offers.id"; 
$result = mysql_query($sql) or die(mysql_error()); 

while ($row=mysql_fetch_assoc($result)) {
    echo "<tr><td>" . $i . "</td><td>" . $row['rid'] . "</td><td>" . 
    $row['name'] . "</td><td>" .$i . "</td></tr>"  ;
    $i++;
}

echo "</table>";    

我遇到了MySQL synaxis的问题以及如何从2个表中获取数据并将结果放在一个&#34; while循环&#34;中的逻辑。

所以我需要在一个中加入2个查询:

$sql ="SELECT * FROM `offers` ORDER BY `rid`";
$sql ="SELECT `geo_id` FROM `geo_in_off` WHERE `offer_id` = '$each_offer_id_from_offers'";

可选但不必要:

$sql ="SELECT `name` FROM `geo` WHERE `id` = '$geo_id_got_from_table_geo_in_off'";

获取一张表格,我可以获得优惠ID,优惠名称和优惠地址。

3 个答案:

答案 0 :(得分:2)

  

尝试此查询,它确实可以帮助您(完整加入查询)

SELECT offers.*, geo_in_off.geo_id FROM offers,
geo_in_off WHERE offers.id=geo_in_off.offer_id

答案 1 :(得分:1)

更改

$sql ="SELECT * FROM `offers` ORDER BY `rid` JOIN geo_in_off ON geo_in_off.id = offers.id";

$sql ="SELECT * FROM `offers` JOIN `geo_in_off` ON `geo_in_off`.`offer_id` = `offers`.`id` ORDER BY `offers`.`rid`";

1)您的查询中的ORDER BY顺序错误

  

SELECT column1,column2,...

     

FROM table_name
  ORDER BY column1,column2,... ASC | DESC;

2)而不是geo_in_off.id = offers.id使用geo_in_off.offer_id = offers.id

答案 2 :(得分:0)

尝试此查询:

$sql = 'SELECT of.id, of.rid, of.name, geo.id 
FROM of.offers 
INNER JOIN of.id = geo.offer_id 
WHERE offer_id = \''.$each_offer_id_from_offers.'\' order by of.rid'