Php 一对多SQL查询
我是sql新手。已经编写了一段时间的程序,但总是找到一种不使用数据库的方法。我知道你很愚蠢 我有一个关于一对多sql查询的问题 我正在建立一个网站,这样我可以了解数据库多一点。所以我有一个数据库和两个表。一个保存用户信息,另一个保存该用户的硬件。只有一个用户,但该用户可以有多个硬件。我可以编写查询来显示用户信息,没有问题。我似乎无法理解的是如何编写查询,以便将所有硬件与该用户关联并显示它 这是我的表格示例 用户表Php 一对多SQL查询,php,mysql,database,Php,Mysql,Database,我是sql新手。已经编写了一段时间的程序,但总是找到一种不使用数据库的方法。我知道你很愚蠢 我有一个关于一对多sql查询的问题 我正在建立一个网站,这样我可以了解数据库多一点。所以我有一个数据库和两个表。一个保存用户信息,另一个保存该用户的硬件。只有一个用户,但该用户可以有多个硬件。我可以编写查询来显示用户信息,没有问题。我似乎无法理解的是如何编写查询,以便将所有硬件与该用户关联并显示它 这是我的表格示例 用户表 user_id ------ primary key first_name
user_id ------ primary key
first_name
last_name
user_id first_name last_name
01 John Doe
02 Jane Doe
hardware table
hardware_id serial model type user_id
01 cac21 Dell Desktop 01
02 cac22 HP Laptop 01
03 cac24 Apple Laptop 02
硬件表
hardware_id ---- primary key
serial
model
type
user_id ---- foreign key (link to the user table)
范例
用户表
user_id ------ primary key
first_name
last_name
user_id first_name last_name
01 John Doe
02 Jane Doe
hardware table
hardware_id serial model type user_id
01 cac21 Dell Desktop 01
02 cac22 HP Laptop 01
03 cac24 Apple Laptop 02
任何帮助都会很好
谢谢
GG试试这个
SELECT users.firstname,
users.lastname,
hardware.serial
hardware.model
hardware.type FROM users LEFT JOIN hardware ON users.user_id=hardware.user_id
从数据库中查询数据将在每个记录上重复该人员的姓名,但在生成页面期间,由您决定是否让输出仅显示一次姓名,然后显示该人员的所有硬件,然后转到下一个人及其所有硬件 因此,使用php,您将有一个嵌套循环。外部循环用于跟踪每个新人,内部循环用于仅显示此人的记录。保留该人的“ID”,以防止有一个以上的“John Doe”人实际上是不同的人。身份证将确保合适的单身人士 现在是查询。联接显示表之间的关系,所有引用多个表的查询都应始终使用tableAlias.columnName进行,以防止出现任何歧义。表名别名也是缩短查询可读性的好方法
select
u.user_id,
u.first_name,
u.last_name,
h.hardware_id,
h.serial,
h.model,
h.type
from
user u <-- the "u" is the alias to user table...
JOIN hardware h <-- "h" is the alias for hardware table
on u.user_id = h.user_id
order by
u.first_name,
u.last_name,
u.user_id
请确保关闭任何基于html的表/行/详细信息标记那么查询在哪里?您到底想获取什么数据?我已经研究了连接,但我认为它会多次显示用户信息。假设有人在找约翰。我希望它显示他的用户信息,这很好,但我始终希望它显示与john相关的所有硬件以及GROUP BY…以下连接将只提供两个表中存在的记录:
从用户作为u内部连接硬件作为h ON u.user\u id=h.user\u id
。如果这不是您想要的连接,这说明了连接的作用。我对sql非常陌生。。select语句用于获取用户数据还是仅获取用户的硬件数据