【发布时间】:2016-04-02 16:15:30
【问题描述】:
我正在尝试使用 LEFT JOIN 在 Postgres 中进行选择查询,但我无法获得正确的结果。我有 2 张桌子 - offers 和 images,当优惠有图像时,它们会插入表格图像中。但并非所有优惠都有图片。
现在,我想从搜索的内容中选择所有优惠(包括图片和不带图片),如果这些优惠有图片,则显示它们。如果有图像,我尝试使用 LEFT JOIN 从images 中进行选择,但是当我尝试显示它们时,有 NULL 值 - 没有任何返回值。
我的查询有什么问题?
$sql->query("SELECT count(offers.id) as offers_count FROM offers LEFT JOIN images ON images.offer_id = offers.id AND images.file_type = 3 WHERE $where"); //$where is what is searched from user
$SQL = "SELECT images.filename, * FROM offers LEFT JOIN images ON images.offer_id = offers.id AND images.file_type = 3 WHERE $where $result LIMIT 12 OFFSET ".($page-1)*12);
for ($i=0; $i<$sql->getNumRows(); $i++) {
$obj = $sql->getRow($i);
offers::show_offer($obj);
}
function show_offer($offer_obj) {
$img = $offer_obj['filename'];
$picture = '<img src="/'.$img.'" />';
echo '<div>';
echo $picture;
//some other info I show
echo '</div>';
}
【问题讨论】:
-
我把它运行到 Postgre 客户端,但我找不到问题出在哪里。当没有图像时,它为 NULL,但不显示此图像,此报价的全部信息不显示甚至没有身份证。
-
@a_horse_with_no_name:
select table1.col1, *works in Postgres。我相信这是 Oracle 的错误,你是这个意思吗? -
如果您没有收到错误,但结果为空,您需要向我们展示您正在执行的 real 查询,而不是 PHP(?) 代码。如果您没有得到空结果而是错误的结果,请编辑您的问题添加一些示例数据(最好是
insert into)语句和您得到的结果(如格式化 text) 包括执行的 real 语句。
标签: sql postgresql select join