У меня небольшая проблема с отношениями MYSQL.MYSQL и PHP, где любая связанная строка содержит строку
Существует для каждого 1 значения в таблице 1, может быть множество значений (0+) в таблице 2.
Я могу получить все данные правильно, однако, проблема возникает, когда некоторые значения в таблице 2 отличаются, в частности, поле «занято».
$sql = "
SELECT
accounts.name AS business,
accounts.industry AS style,
accounts_cstm.renewaldate_c AS ren_date,
accounts_cstm.nolongercontact_c AS NLC,
accounts_cstm.contactname_c AS person,
campaigns.name AS campaign,
users.first_name AS exec_fn,
users.last_name AS exec_sn,
email_addr_bean_rel.bean_id AS bean_id,
email_addresses.email_address AS email,
qs_quotationinformation.takenup AS takeup,
email_addr_bean_rel.email_address_id AS email_id
FROM
accounts
LEFT JOIN
campaigns ON accounts.campaign_id = campaigns.id
LEFT JOIN
users ON accounts.assigned_user_id = users.id
INNER JOIN
accounts_cstm ON accounts.id = accounts_cstm.id_c
LEFT JOIN
email_addr_bean_rel ON accounts.id = email_addr_bean_rel.bean_id
LEFT JOIN
email_addresses ON email_addr_bean_rel.email_address_id = email_addresses.id
LEFT JOIN
qs_quotamation_accounts_c ON accounts.id = qs_quotamation_accounts_c.qs_quot108funts_ida
LEFT JOIN
qs_quotationinformation ON qs_quotamation_accounts_c.qs_quotdb81tion_idb = qs_quotationinformation.id
WHERE
accounts.deleted = 0";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if($row["NLC"] == 1 || $row["takeup"] == 1){$NLC = "No";}else{$NLC = "Yes";}
echo '<tr><td>'.$row['business'].'</td><td>'.$row["style"].'</td><td>'.$row["ren_date"].'</td><td>'.$NLC.'</td><td>'.$row["person"].'</td><td>'.$row["campaign"].'</td><td>'.$row["exec_fn"].' '.$row["exec_sn"].'</td><td>'.$row["email"].'</td><td>'.$row["takeup"].'</tr>';
}
} else {
echo "0 results";
}
В этом случае таблица 1 представляет собой «учетные записи», а таблица 2 - «qs_quotationinformation».
Есть некоторые счета в таблице 1, которые имеют несколько записей в таблице 2, и некоторые из «takenup» записей в таблице 2 (относящихся к одной и той же учетной записи) может быть 1, а некоторые быть 0.
Так мне нужно сделать так, чтобы, если какая-либо из записей в таблице 2 = 1, то все переменные $ NLC должны = «Нет».
Я не знаю, возможно ли это, или если есть лучший способ получить эту информацию. В таблице html отсутствуют данные, которые извлекаются, но это потому, что таблица представляет собой просто визуальное представление наиболее важных данных пользователю.
редактировать таблицы (за исключением личных данных):
Таблица 1: +----+---------+---------+ | id | name | deleted | +----+---------+---------+ | 1 | example | 0 | +----+---------+---------+
Таблица 2: +----+---------+ | id | takenup | +----+---------+ | 1 | 0 | +----+---------+ | 2 | 1 | +----+---------+ | 3 | 0 | +----+---------+
Все строки в таблице 2, относятся к строке в таблице 1. Но так как это строка с takeup = 1 $ NLC необходимо вернуть «Нет», а не «Да» (что в настоящее время делает, потому что последняя связанная строка равна 0)
Просто совет, постарайтесь, чтобы ваши соединения были как можно ниже, 7 - это много. – Grumpy
Вы могли бы предоставить также ваши данные образца и структуру таблицы – Beginner
@Grumpy, к сожалению, база данных, с которой я должен работать, имеет 1 запись учетной записи, разбитую на 10 таблиц из-за программы, которая создала/использует ее – Jordan