mysql从多表中选择问题

这是查询

SELECT 
                        members.memberID,
                        members.salutation,
                        members.firstName,
                        members.middleName,
                        members.lastName,
                        members.suffix,
                        members.company,

                        addresses.address1,
                        addresses.address2,
                        addresses.city,
                        addresses.state,
                        addresses.postalCode,
                        addresses.country,
                        addresses.memberID,

                        email.email,
                        email.memberID,

                        phonenumbers.phoneNumber, 
                        phonenumbers.memberId,

                        subscriptions.year,
                        subscriptions.memberID
                    FROM 
                        members,
                        addresses,
                        email,
                        phonenumbers,
                        subscriptions
                    WHERE
                        subscriptions.year = '%s'
                            AND
                        subscriptions.memberID = members.memberID
                            AND
                        subscriptions.memberID = addresses.memberID
                            AND
                        subscriptions.memberID = email.memberID
                            AND
                        subscriptions.memberID = phonenumbers.memberID
                    ORDER BY 
                        members.lastName,
                        members.firstName,
                        members.company
LIMIT 0, 10

我的问题是它是一个巨大的查询,所以我试图将它限制为一次这么多…它应该有超过5000个结果…无论如何,唯一有效的限制是限制0,10,如果你做任何其他5, 10它不起作用0,50不起作用……只有0,10个作品……

当我执行0,10时,查询返回blake firstName,middleName,lastName和其他一些……当我在$result上执行print_r()时,它也显示为空白,并且在数据库,也没有错别字…

最佳答案 根据您的成员平均有多少电子邮件地址和电话号码,您的查询可能存在问题.假设您有记录(为简洁起见省略了大多数字段):

members                             addresses             phoneNumbers
memberId | firstName | lastName     memberId | city       memberId | phoneNumber
---------------------------------   -------------------   ----------------------
839      | Joe       | Hallenbeck   839      | New York   839      | 111-11111
                                    839      | L.A.       839      | 222-22222

那么你的加入将会为Joe Hallenbeck创造一个记录,但是四个:

memberId | firstName | lastName    | city     | phoneNumber
-----------------------------------------------------------
839      | Joe       | Hallenbeck  | New York | 111-1111
839      | Joe       | Hallenbeck  | New York | 222-2222
839      | Joe       | Hallenbeck  | L.A.     | 111-1111
839      | Joe       | Hallenbeck  | L.A.     | 222-2222

我不知道这是否是你想要的,但你应该知道这个查询可能会产生比数据库中的成员多得多的结果记录.

如Konerak所指出的,您应该发布一些DDL语句(创建表等)以获得更多建议.

点赞