如何从两个表中检索匹配值并排除一些?

时间:2017-08-24 10:26:09

标签: php mysql sql database sqlite

我有两个数据库表。在第一个表中,我保留了用户的详细信息,在第二个表中,我将电子邮件作为第一个表中的外键传递,并将地址保留在第二个表中。我想将一个用户的国家/地区与所有其他用户匹配,并检索匹配的元组,但我不想要与所有其他用户匹配的用户的详细信息。请帮助我这方面我浪费了两天时间,非常感谢你的帮助。贝娄是我的桌子。

Fisrt表

CREATE TABLE user(
  id_user int NOT NULL,
  email varchar(256) UNIQUE,
  password varchar(50) DEFAULT NULL,
  dateOfBirth varchar(20) DEFAULT NULL,
  Gender varchar(10) DEFAULT NULL,
  PRIMARY KEY (id_user)
)

1   ta.ahmadzai tariq   12/1/1996   Male
2   sa.ahmadzai Sadiq   1/3/1998    Male
3   ba.ahmadzai Bari    12/1/1999   Male
4   ma.ahmadzai Mohammand   12/1/2000   Male

第二张表

CREATE TABLE address(
  id_address int NOT NULL,
  email varchar(256) NOT NULL,
  address varchar(50) DEFAULT NULL,
  road varchar(20) DEFAULT NULL,
  City varchar(10) DEFAULT NULL,
  Country varchar(10) DEFAULT NULL,
  PRIMARY KEY (id_address),
  CONSTRAINT id_AddUser FOREIGN KEY (email) REFERENCES user (email) ON DELETE NO ACTION ON UPDATE NO ACTION
)
10  sa.ahmadzai Colombo 74  Colombo6    Sri Lanka
20  ba.ahmadzai Kandy   80  KandyTown   Sri Lanka
50  ma.ahmadzai Galle   20  Fort    Sri Lanka

我能够编写一个查询,但它似乎完全错误我的需要。

SELECT country
FROM address
WHERE email like 'ta.ahmadzai' NOT IN 
    (SELECT DISTINCT email
     FROM "user"
     WHERE country like 'India'
    )

我想在PHP脚本中使用该查询,我将把电子邮件和国家/地区作为变量传递。

1 个答案:

答案 0 :(得分:0)

试试这个,下面的查询可能对你有帮助。

SELECT * FROM users u, address a WHERE a.email=u.email AND a.country LIKE (SELECT country FROM address WHERE email = ? );