我的最后一个问题是从两个表格中建立一个列表。
SELECT CONCAT( P.LastName, ', ', P.FirstName ) AS Name, MP.MembershipID, P.PersonID
FROM `person` P
INNER JOIN `membershipperson` MP ON MP.PersonID = P.PersonID
ORDER BY MP.MembershipID DESC
现在我需要帮助将更多信息添加到列表中。
我需要一个显示 LastName,FirstName,PersonID,MemberID,LastActiveYear,MemberSince,Approved,LockedOut 的列表。
如果 LastActiveYear 是< ,则批准位为0 2013.我可能想使用一个php mysqli页面,因此我可以根据需要更改年份。
以下是表格示例;
person
PersonID LastName FirstName
----------+------------+------------+---------
1212 Barr Foo
888 To Go
1415 From Is
Membershipperson
MemberShipID PersonID
-------------+------------
2250 1212
1150 888
3500 1415
users
PersonID Username IsApproved LockedOut
----------+-------------+-----------+-----------
1212 2250 1 1
888 1150 1 0
1415 3500 0 1
membership
MemberShipId LastActiveYear
---------------+------------------------
#### + 2012
更正并添加了表格。
答案 0 :(得分:0)
我假设您要求
在这里你加入你的人员表会员表和用户表我想你已经保持一对一的关系
SELECT
p.LastName,
p.FirstName,
p.PersonID,
m.MemberID,
p.LastActiveYear,
p.MemberSince,
u.Approved,
u.LockedOut
FROM person p
INNER JOIN Membershipperson m ON(m.PersonID = p.PersonID)
INNER JOIN users u ON(u.PersonID = u.PersonID)
INNER JOIN membership ms ON(ms.MembershipId = m.MemberID)
WHERE ms.LastActiveYear < '2013'
AND u.Approved =1
GROUP BY u.PersonID
第二个你要求
与在更新查询中加入表并将Approved设置为0
相同UPDATE users u
INNER JOIN Membershipperson m ON(m.PersonID = u.PersonID)
INNER JOIN person p ON(p.PersonID = u.PersonID)
INNER JOIN membership ms ON(ms.MembershipId = m.MemberID)
SET u.Approved = 0
WHERE ms.LastActiveYear < '2013'
答案 1 :(得分:0)
假设您将使用php mysqli
//Obviously substitute for you mysql credentials
$mysqli_link = mysqli_connect("localhost","root","pas") or die(mysqli_error($mysqli_link));
//again choose the correct right db
mysqli_select_db($mysqli_link,"database") or die (mysqli_error($mysqli_link));
$query = "SELECT CONCAT( P.LastName, ', ', P.FirstName ) AS Name, MP.MembershipID, ms.LastActiveYear, P.PersonID as personId
FROM `person` P
INNER JOIN `membershipperson` MP ON MP.PersonID = P.PersonID
LEFT JOIN `user` ON P.PersonID=users.PersonID
LEFT JOIN `membership` ms ON MP.MemberShipID=ms.MemberShipID
WHERE users.Approved=1
AND ms.LastActiveYear < 2013
ORDER BY MP.MembershipID DESC";
$result = mysqli_query($mysqli_link, $query);
//To see results
$data = array();
$ids = array();
while ($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
$ids[] = $row['personId'];
}
echo'<pre>';
print_r($data);
die('</pre>'); // this will stop the rest of the page from loading
//loop through the results and store the `PersonID`'s in an array called `$ids` (or whatever you want to call it)
$ids = implode(',', $ids);
$ids = substr($ids, 0, -1);
$query = "UPDATE users SET Approved=0 WHERE PersonID IN ($ids)";
mysqli_query($mysqli_link, $query);
希望这有帮助! :)