这段查询怎么写?
我要做一个多用户相册,有三个表,如下:
users
=======
username
user_id
user_city
album
========
album_id
user_id
album_title
photo
========
photo_id
album_id
photo_url
三者关系:users是用户信息,每个用户可以有多个相册album,相片保存在photo中。
现在我想得到某个用户某个相册的相片,要保证这组相片是该用户的,并且是该用户的某个相册,请教各位,这段查询要怎么写?
我原来是这样写的:
SELECT * FROM `photo`,`album` WHERE photo.photo_id = $photo_id AND photo.album_id = album.album_id AND album.user_id = $user_id
上面$photo_id 和$user_id为传进来的变量。因为是用GET传进来的,所以我才想用严格的查询来确保数据的准确。
我想知道我的写法对不对?有没更好的写法?或者是表的关系结构该如何调整,才能做得更好一点。
问题点数:0、回复次数:3Top
1 楼lxf_1976(小木)回复于 2003-12-01 12:32:02 得分 0
你的写法也可以,但结果集合中包含了photo和album两个表的所有字段,不知道是不是你需要的?
我喜欢写成这样:
SELECT album.album_title, photo.photo_url FROM photo
LEFT JOIN album ON album.album_id = photo.album_id
LEFT JOIN users ON users.user_id = album.user_id
WHERE photo.photo_id = $photo_id AND users.user_id = $user_id
这样我可以从SQL语句更直观的知道所使用的索引以及牵涉的表,当然前提是3个表的id字段都建了索引Top
2 楼yyytoyyy(小海)回复于 2003-12-01 22:23:57 得分 0
谢谢回答,我在想,是否我在photo表中增加一个user_id字段,只用到一个表进行查询就可以达到我的目的,这样是不是更方便些?Top
3 楼yyytoyyy(小海)回复于 2003-12-01 22:29:42 得分 0
另外,我希望有人能介绍一些关于数据库表的设计方面的书籍或资料,主要讲如何使数据库设计更合理、更快、更节省空间等等。Top




