我正在尝试从查询中的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>';
}
如有任何帮助,将不胜感激
如果列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对两个表都不通用的情况。
这个查询有点混乱,这应该能在中工作
$availableProvidersSQL = mysql_query(
"SELECT * FROM contentProviders
WHERE
code IN (
SELECT providerCode
FROM contentAvailability
WHERE contentGuid = '{$row['guid']}'
)
ORDER BY firendlyName")
or die(mysql_error());
请记住,如果您使用的是双引号字符串,标量变量只需扩展到其值,但当使用数组时,您必须忘记数组周围的引号occuranec(如" $row[guid] "
(,或者使用数组周围的{}
(如上文所述(。
但是
请不要使用
mysql_
数据库扩展,它被弃用(在PHP7中永远消失(特别是如果你只是在学习PHP,那么就要花精力学习PDO
数据库扩展。从这里开始它真的很容易
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"不是一个词。