【问题标题】:How to retrieve matching values from two tables and exclude some?如何从两个表中检索匹配值并排除一些?
【发布时间】:2018-02-02 04:34:38
【问题描述】:

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

第一个表

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 脚本中使用查询,我将在其中将电子邮件和国家/地区作为变量传递。

【问题讨论】:

  • 请提供一些示例数据和预期输出。
  • 我对表格没有任何问题,我只是想帮助编写我上面提到的问题的查询。
  • 您要检索恰好居住在某个特定用户所在国家/地区的所有用户的列表,还是要按国家/地区对所有用户进行分组?
  • Tariq 的回答对我有帮助,谢谢

标签: php mysql sql database sqlite


【解决方案1】:

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

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

【讨论】:

  • 谢谢,这个查询确实帮助了我。
猜你喜欢
  • 1970-01-01
  • 2019-12-31
  • 2013-10-28
  • 2016-08-02
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2016-02-29
  • 2017-11-30
相关资源
最近更新 更多