简体   繁体   English

MySql 基于条件的连接查询

[英]MySql condition based join query

I have two tables.我有两张桌子。 These tables have a few matching fields.这些表有几个匹配的字段。 I would like to fetch them with two conditions.我想用两个条件来获取它们。

First one is if a.site_id = b.site_id , as this is our foreign key.第一个是 if a.site_id = b.site_id ,因为这是我们的外键。

Second is a.Show_Link_back=b.Show_Link_back=1 .其次是a.Show_Link_back=b.Show_Link_back=1

Below is my current query, but with this query I am not getting the right data like first table (a) doesn't responding with data .下面是我当前的查询,但是通过这个查询,我没有得到正确的数据,比如第一个表 (a) 没有响应 data 。

Here is the structure of tables这是表的结构

First table fields:第一个表字段:

  • site_id站点 ID
  • Link_back_Image_URL Link_back_Image_URL
  • Link_back_Title Link_back_Title
  • Show_Link_back Show_Link_back

Second table fields第二个表字段

  • site_id站点 ID
  • Link_back_Image_URL Link_back_Image_URL
  • Link_back_Title Link_back_Title
  • Show_Link_back Show_Link_back

I would like to make a relation whether site_id is a foreign key and Show_Link_back value is 1 for both table ?我想建立一个关系,site_id 是否是外键,两个表的 Show_Link_back 值是否为 1?

Current query当前查询

SELECT a.site_id, a.Link_back_Image_URL, a.Link_back_Title, 
       a.Link_back_Description, a.Link_back_URL, a.Show_Link_back,
       b.Link_back_Image_URL, b.Link_back_Title,
       b.Link_back_Description, b.Link_back_URL
    FROM download_site a, product_listing b
    WHERE a.site_id = b.site_id 
      AND (a.Show_Link_back=1 or b.Show_Link_back=1)

Here is a small query for both table这是两个表的小查询

CREATE TABLE table1
    (`site_id` int(10), `Link_back_Image_URL` varchar(55), 
     `Link_back_Title` varchar(55),`Link_back_Description` varchar(55),
     `Link_back_URL` varchar(55),`Show_Link_back` int(2));

INSERT INTO table1
    (`site_id`, `Link_back_Image_URL`, `Link_back_Title`,
     `Link_back_Description`,`Link_back_URL`,`Show_Link_back`)
VALUES
    (1, 'test', 'test_title','test_desc','test_url','1'),
    (2, 'test', 'test_title','test_desc','test_url','0'),
    (3, 'test', 'test_title','test_desc','test_url','1');

CREATE TABLE table2
    (`site_id` int(10), `Link_back_Image_URL` varchar(55),
     `Link_back_Title` varchar(55),`Link_back_Description` varchar(55),
     `Link_back_URL` varchar(55),`Show_Link_back` int(2));

INSERT INTO table2
    (`site_id`, `Link_back_Image_URL`, `Link_back_Title`,
     `Link_back_Description`,`Link_back_URL`,`Show_Link_back`)
VALUES
    (1, 'test', 'test_title','test_desc','test_url','1'),
    (2, 'test', 'test_title','test_desc','test_url','0'),
    (3, 'test', 'test_title','test_desc','test_url','1');

Looks good to me.在我看来很好。 2 out of 3 rows come back 3 行中有 2 行返回

SELECT a.site_id,a.Show_Link_back as ASLB,b.Show_Link_back as BSLB,
a.Link_back_Image_URL, a.Link_back_Title,a.Link_back_Description,a.Link_back_URL, b.Link_back_Image_URL,b.Link_back_Title,b.Link_back_Description,b.Link_back_URL
FROM table1 a
join table2 b
on a.site_id=b.site_id
where a.Show_Link_back=1 and b.Show_Link_back=1

+---------+------+------+---------------------+-----------------+-----------------------+---------------+---------------------+-----------------+-----------------------+---------------+
| site_id | ASLB | BSLB | Link_back_Image_URL | Link_back_Title | Link_back_Description | Link_back_URL | Link_back_Image_URL | Link_back_Title | Link_back_Description | Link_back_URL |
+---------+------+------+---------------------+-----------------+-----------------------+---------------+---------------------+-----------------+-----------------------+---------------+
|       1 |    1 |    1 | test                | test_title      | test_desc             | test_url      | test                | test_title      | test_desc             | test_url      |
|       3 |    1 |    1 | test                | test_title      | test_desc             | test_url      | test                | test_title      | test_desc             | test_url      |
+---------+------+------+---------------------+-----------------+-----------------------+---------------+---------------------+-----------------+-----------------------+---------------+

Note the aliases used in columns 2 and 3 to make some sense of it all.请注意第 2 列和第 3 列中使用的别名,以了解这一切。

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

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