我有两张桌子,比方说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 ")
如果错误,还请提出一些替代解决方案
答案 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
条款来向您展示。
您应该引用主键或索引列,或添加新索引