将一个表的id与另一个表的user_id匹配,以获取mysql中的记录

时间:2016-05-17 08:20:25

标签: javascript php jquery mysql

我有两张桌子,比方说x和y。我正在使用两个查询来通过一个查询获取x表数据,并从y表中获取与y' s UserId匹配x的id的所有行

这是我的mysql

包括' config.php';

$sql1= mysql_query("select FirstName,MiddleName,LastName,Gender,Location,Email,Mobile from personaldetails limit 1");

$sql2 = mysql_query("select BookTilte,BookGenre,BookWriter,BookDescription from bookdetails where personaldetails.Id = bookdetails.UserId ")

如果错误,还请提出一些替代解决方案

3 个答案:

答案 0 :(得分:0)

在这些情况下你可以使用INNER JOIN

SELECT FirstName,MiddleName,LastName,Gender,Location,Email,Mobile,BookTilte,BookGenre,BookWriter,BookDescription FROM `personaldetails` as `PD` INNER JOIN `bookdetails` AS `BD` ON `PD`.`Id` = `BD`.`UserId`

注意:不推荐使用mysql_query,您应该使用mysqli函数

答案 1 :(得分:0)

尝试使用以下查询

$sql1= mysql_query("select a.FirstName,a.MiddleName,a.LastName,a.Gender,a.Location,a.Email,a.Mobile,b.BookTilte,b.BookGenre,b.BookWriter,b.BookDescription from personaldetails as a join bookdetails as b on a.Id=b.UserId  limit 1");
  

加入将合并两个表格。

     

a b 是两个表的别名。通过使用别名,我们可以指定   哪个字段从哪个表中选择。

     

a.Id = b.UserId 用于指定主键和引用键

答案 2 :(得分:0)

没错,有时可能是正确的做法。

另一种解决方案可能是

$str = <<<MARKER
SELECT FirstName,MiddleName,LastName,Gender,Location,Email,Mobile 
FROM personaldetails 
INNER JOIN bookdetails ON (personaldetails.Id = bookdetails.UserId)
ORDER BY personaldetails.Id
MARKER;
$sql1= mysql_query($query);

备注,

  • 您不再需要限制,因为它只返回第一行。

  • 对于每个bookdetails,您会发现personaldetails行(personaldetails将被复制),

  • 我添加了一个ORDER BY条款来向您展示。

  • 您应该引用主键或索引列,或添加新索引