简体   繁体   English

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

[英]Get data from 2 tables and make a table in one query

I have two MySQL tables: 我有两个MySQL表:

offers:

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

  2    |  1235   |    john

  3    |  5342   |    liam

And

geo_in_off:

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

I need to make a table on my website looging like: 我需要在我的网站上进行搜索,例如:

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

But I got MySQL troubles. 但是我遇到了MySQL的麻烦。

My code is: 我的代码是:

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>";    

I've got problems with MySQL synaxis and the logic how to get the data from 2 tables and give the result in one "while loop". 我在MySQL同步和逻辑上遇到了问题,该逻辑如何从2个表中获取数据并在一个“ while循环”中给出结果。

So I need to join 2 queries in one: 所以我需要将两个查询合二为一:

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

And optional but not necessary: 可选但不是必需的:

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

And get a table where I get the offer id, the offer name and the offer geo. 并获得一个表格,在该表格中可以找到商品ID,商品名称和商品地理位置。

Try this query, it does help you (full join query) 试试这个查询,对您有帮助(完全联接查询)

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

Change 更改

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

To

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

1) ORDER BY order is wrong in your query 1)您查询的订单顺序错误

SELECT column1, column2, ... SELECT column1,column2,...

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

2) Instead of geo_in_off.id = offers.id use geo_in_off.offer_id = offers.id 2)代替geo_in_off.id = offers.id使用geo_in_off.offer_id = offers.id

Try this query: 试试这个查询:

$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'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM