0

我尝试通过 mysql join 组合来自 2 个表的数据,但我看起来像,我根本没有收到来自第二个表的结果。

表结构#1 (site_hosters);

+------------+--------------+--------+
| host_id    | name         | prio   |
+------------+--------------+--------+
| 1          | site.com     | 0      |
+------------+--------------+--------+

表结构#2 (site_date);

+------------+--------------+--------+
| id         | hoster       | page   |
+------------+--------------+--------+
| 1          | site.com     | http:..|
+------------+--------------+--------+

我试图得到的是像 'id, host_id, name, ....etc' 这样的结果;

当我尝试以下查询时,查询结果中不包含 host_id 和 prio。看起来,通过查询连接完全没有效果。

我的查询:

SELECT 
         site.id,
         site.hoster,
         site.page,

FROM site_data as site

INNER JOIN site_hosters hoster
ON site.hoster = hoster.name

我希望有人可以帮助我解决这个问题。

亲切的问候,尼克

4

3 回答 3

2

您必须命名要选择的列。添加这样的site_hosters列:

SELECT 
     site.id,
     site.hoster,
     site.page,
     hoster.host_id,
     hoster.prio
FROM site_data as site
INNER JOIN site_hosters hoster ON site.hoster = hoster.name
于 2012-04-05T10:34:11.987 回答
1

你可以做

SELECT
           site.*,
           hoster.*
FROM site_data as site  
INNER JOIN site_hosters hoster ON site.hoster = hoster.name 

这将返回所有字段,但是,您可能只需要类似

site.id, ste.hoster, site.page, hoster.prio作为你的领域。

于 2012-04-05T10:36:33.490 回答
1

只需在 SELECT 中列出必填字段:

SELECT site.id, hoster.host_id, hoster.name, site.hoster, site.page
FROM site_data AS site
INNER JOIN site_hosters AS hoster ON site.hoster = hoster.name
于 2012-04-05T10:40:19.833 回答