我有两个数据库表。在第一个表中,我保留了用户的详细信息,在第二个表中,我将电子邮件作为第一个表中的外键传递,并将地址也保留在了第二个表中。我想将一个用户所在的国家/地区与所有其他用户匹配,并检索匹配的元组,但是我不希望与其他所有用户匹配的用户的详细信息。在这方面请帮助我,我浪费了我两天时间,非常感谢您的帮助。贝娄是我的桌子。
菲斯特表
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脚本中使用查询,在该脚本中我将电子邮件和国家/地区作为变量传递。
最佳答案
请尝试使用此方法,以下查询可能会为您提供帮助。
SELECT * FROM users u, address a WHERE a.email=u.email AND a.country LIKE (SELECT country FROM address WHERE email = ? );
关于php - 如何从两个表中检索匹配值并排除其中一些?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45859151/