我正在尝试找到一种从查询中的IN子句中获取值的方法。 我正在寻找的列是“contentAvailability”表中的“viewURL”。
$availableProvidersSQL = mysql_query("SELECT * FROM contentProviders
WHERE
code IN (SELECT providerCode FROM contentAvailability WHERE contentGuid = '".($row['guid'])."')
ORDER BY firendlyName") or die(mysql_error());
while($availableProvidersRow = mysql_fetch_array($availableProvidersSQL)) {
echo '<div class="col-lg-12 col-md-12 col-sm-6 col-xs-6" style="padding-bottom:7px;">
<figure>
<a href="#"><img src="'.$baseURL.'images/providers/'.$availableProvidersRow['code'].'/Logo.jpg" class="providerLink"></a><br />
</figure>
</div>';
}
非常感谢任何帮助
答案 0 :(得分:2)
如果列contentGuid对contentAvailability和contentProviders都是通用的,那么为什么不使用JOIN?
SELECT
pv.*,
av.viewUrl
FROM contentAvailability av
JOIN contentProviders pv ON pv.contentGuid = av.contentGuid AND av.providerCode = pv.code
WHERE av.contentGuid = $row['guid']
ORDER BY av.friendlyName
如果两个表并不常见contentGuid,那么你可以像这样进行JOIN:
SELECT
pv.*,
av.viewUrl
FROM contentAvailability av
JOIN contentProviders pv ON av.providerCode = pv.code
WHERE av.contentGuid = $row['guid']
ORDER BY av.friendlyName
如果我遗失了某些东西,请告诉我。
编辑以显示两个表格中不存在contentGuid的情况。
答案 1 :(得分:0)
这个查询有点困惑,这应该可行
$availableProvidersSQL = mysql_query(
"SELECT * FROM contentProviders
WHERE
code IN (
SELECT providerCode
FROM contentAvailability
WHERE contentGuid = '{$row['guid']}'
)
ORDER BY firendlyName")
or die(mysql_error());
请记住,如果您使用的是双引号字符串标量变量只是扩展为它们的值,但在使用数组时,您必须忘记" $row[guid] "
之类数组周围的引号或使用{}
像我上面那样在阵列周围。
但是
请不要使用the
mysql_
database extension,它 不推荐使用(在PHP7中永远消失)特别是如果您只是学习PHP,请花费精力学习PDO
数据库扩展。 Start here非常简单
答案 2 :(得分:0)
SELECT x.columns
, x.I
, x.actually
, x.want
FROM contentProviders x
JOIN contentAvailability y
ON y.providerCode = x.code
WHERE y.contentGuid = '{$row['guid']}'
ORDER
BY x.firendlyName;
请注意'firendly'不是一个词。