目前我有一个循环从每个行的2个表,用户和客户端检索数据。所以查询堆叠起来。mysql连接查询不返回正确的值
首先,这是一件坏事吗? 我正在寻找每页显示20行,所以目前该工作约45个查询。
这里的查询时,我只显示2行的列表:
数据库查询
#1
SELECT CID FROM users WHERE Hash = :Hash LIMIT 1;
#2
SELECT start_time,finish_time,dinner_time FROM company WHERE CID = :CID LIMIT 1;
#3
SELECT CID,Access,Hash FROM users WHERE CID = :CID LIMIT 1;
#4
SELECT count(*) FROM jobs WHERE CID = :CID AND (( Status="1") OR (Status="2")) AND SUBSTRING(LOWER(`SiteName`), 1, 1) REGEXP '[[:digit:]]';
#5
SELECT * FROM jobs WHERE CID = :CID AND ( (Status="1") OR (Status="2")) AND SUBSTRING(LOWER(`SiteName`), 1, 1) REGEXP '[[:digit:]]' ORDER BY JID DESC LIMIT 20;
#6
SELECT UID,FirstName,LastName FROM users WHERE CID = :CID AND UID = :UID LIMIT 1;
#7
SELECT ClientID,Name FROM clients WHERE CID = :CID AND ClientID = :ClientID LIMIT 1;
#8
SELECT UID,FirstName,LastName FROM users WHERE CID = :CID AND UID = :UID LIMIT 1;
#9
SELECT ClientID,Name FROM clients WHERE CID = :CID AND ClientID = :ClientID LIMIT 1;
#10
SELECT UID,FirstName,LastName FROM users WHERE CID = :CID AND UID = :UID LIMIT 1;
我在想什么是用户和客户端连接到一个查询(6-7从上面的列表)
SELECT u.UID, u.FirstName, u.LastName, c.ClientID, c.Name FROM users u INNER JOIN clients c WHERE u.CID = :CID AND c.CID = :CID2 AND u.UID = :UID AND c.ClientID = :ClientID
这是返回什么:
Array
(
[0] => Array
(
[name] => UID
[value] => 1
[type] => 1
)
[1] => Array
(
[name] => ClientID
[value] => 8
[type] => 1
)
[2] => Array
(
[name] => CID
[value] => 1
[type] => 1
)
[3] => Array
(
[name] => CID2
[value] => 1
[type] => 1
)
)
我期待的是返回,如:
Array
(
[UID] => 1
[FirstName] => John
[LastName] => Smith
[ClientID] => 1
[Name] => Client Name
)
任何人都知道我要去哪里错了吗?
更新
客户表
CREATE TABLE IF NOT EXISTS `clients` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`CID` int(11) NOT NULL,
`ClientID` int(11) DEFAULT NULL,
`Name` varchar(100) NOT NULL,
`Clientcontact` varchar(100) NOT NULL,
`Prefix` varchar(20) NOT NULL,
`Email` varchar(50) NOT NULL,
`Phone` varchar(12) NOT NULL,
`Fax` varchar(12) NOT NULL,
`Address1` varchar(100) NOT NULL,
`Address2` varchar(100) NOT NULL,
`Address3` varchar(100) NOT NULL,
`County` varchar(100) NOT NULL,
`Post` varchar(100) NOT NULL,
`Invoicecontact` varchar(100) NOT NULL,
`Invoiceemail` varchar(50) NOT NULL,
`Invoiceaddress1` varchar(100) NOT NULL,
`Invoiceaddress2` varchar(100) NOT NULL,
`Invoiceaddress3` varchar(100) NOT NULL,
`Invoicecounty` varchar(100) NOT NULL,
`Invoicepost` varchar(100) NOT NULL,
`Dateadded` int(10) NOT NULL,
`vat` tinyint(1) DEFAULT NULL,
`vatnumber` int(14) DEFAULT NULL,
`Status` tinyint(1) NOT NULL,
PRIMARY KEY (`ID`)
)
用户表
CREATE TABLE IF NOT EXISTS `users` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`CID` int(11) DEFAULT NULL,
`UID` int(11) DEFAULT NULL,
`FirstName` varchar(25) DEFAULT NULL,
`LastName` varchar(25) DEFAULT NULL,
`dob1` varchar(2) DEFAULT NULL,
`dob2` varchar(2) DEFAULT NULL,
`dob3` varchar(4) DEFAULT NULL,
`Email` varchar(50) DEFAULT NULL,
`password_hash` text NOT NULL,
`api_key` varchar(32) NOT NULL,
`api_sync_key` varchar(10) NOT NULL,
`api_sync_word` varchar(10) NOT NULL,
`Hash` varchar(32) DEFAULT NULL,
`start_time` decimal(4,2) DEFAULT NULL,
`end_time` decimal(4,2) DEFAULT NULL,
`dinner_time` decimal(4,2) DEFAULT NULL,
`Phone_A` varchar(15) DEFAULT NULL,
`Phone` varchar(15) DEFAULT NULL,
`MobileNum` varchar(15) DEFAULT NULL,
`WorkNum` varchar(15) DEFAULT NULL,
`Emg` varchar(50) DEFAULT NULL,
`EmgNum` varchar(15) DEFAULT NULL,
`Address1` varchar(100) DEFAULT NULL,
`Address2` varchar(100) DEFAULT NULL,
`Address3` varchar(100) DEFAULT NULL,
`County` varchar(100) DEFAULT NULL,
`Post` varchar(100) DEFAULT NULL,
`DateJoined` varchar(30) DEFAULT NULL,
`LastLogged` int(11) DEFAULT NULL,
`DateLeft` int(11) DEFAULT NULL,
`Contract` int(3) DEFAULT NULL,
`Pay` int(3) DEFAULT NULL,
`Position` int(3) DEFAULT NULL,
`Active` varchar(255) DEFAULT NULL,
`Access` tinyint(2) DEFAULT NULL,
PRIMARY KEY (`ID`)
)
你可以在这里添加你的两个表结构来了解更多,并检查我的答案。 –
我刚刚更新了 – user3388630