Php 将3个SQL查询合并为1个

Php 将3个SQL查询合并为1个,php,sql,Php,Sql,来自表a中的一行,我需要得到表B中的一行,它得到表C中的一行。 根据我的基本知识,我把一个查询放在一个查询中的一个查询中,但我认为有更好的方法可以做到这一点 <?php $result = pg_query($dbconn, " SELECT sequence, w_homepage_package_id FROM adempiere.w_homepage_package WHERE sequence >

来自表a中的一行,我需要得到表B中的一行,它得到表C中的一行。 根据我的基本知识,我把一个查询放在一个查询中的一个查询中,但我认为有更好的方法可以做到这一点

<?php  $result = pg_query($dbconn, "
    SELECT sequence, w_homepage_package_id                            
    FROM adempiere.w_homepage_package
    WHERE sequence > 0
    ORDER BY sequence ASC
    "); // first QUERY
    while ($promo = pg_fetch_row($result)) { // first WHILE
        $id = $promo[1];    
        $produktfoto = pg_query($dbconn, "
        SELECT w_bilder_id 
        FROM adempiere.w_homepage_image 
        WHERE w_homepage_package_id = $id LIMIT 1"); // second QUERY
        while ($produktrow = pg_fetch_row($produktfoto)) { // second WHILE
            $bilderid = $produktrow[0];
            $bildurl = pg_query($dbconn, "
            SELECT w_bildurl 
            FROM adempiere.w_bilder 
            WHERE w_bilder_id = $bilderid LIMIT 1"); // third QUERY
            while ($bildpfad = pg_fetch_row($bildurl)) { // third WHILE
                echo $bildpfad[0];
            }
        }
    ;}                                  
    ?>

子查询或联接。可以在相对列上联接三个表,也可以嵌套它们直到到达第一个表

SELECT w_bildurl 
FROM adempiere.w_bilder 
WHERE w_bilder_id = 
      (SELECT w_bilder_id 
      FROM adempiere.w_homepage_image 
      WHERE w_homepage_package_id IN 
           (SELECT sequence,  
           w_homepage_package_id                            
           FROM adempiere.w_homepage_package
           WHERE sequence > 0
           ORDER BY sequence ASC)
     LIMIT 1)
LIMIT 1

子查询或联接。可以在相对列上联接三个表,也可以嵌套它们直到到达第一个表

SELECT w_bildurl 
FROM adempiere.w_bilder 
WHERE w_bilder_id = 
      (SELECT w_bilder_id 
      FROM adempiere.w_homepage_image 
      WHERE w_homepage_package_id IN 
           (SELECT sequence,  
           w_homepage_package_id                            
           FROM adempiere.w_homepage_package
           WHERE sequence > 0
           ORDER BY sequence ASC)
     LIMIT 1)
LIMIT 1

子查询或联接。可以在相对列上联接三个表,也可以嵌套它们直到到达第一个表

SELECT w_bildurl 
FROM adempiere.w_bilder 
WHERE w_bilder_id = 
      (SELECT w_bilder_id 
      FROM adempiere.w_homepage_image 
      WHERE w_homepage_package_id IN 
           (SELECT sequence,  
           w_homepage_package_id                            
           FROM adempiere.w_homepage_package
           WHERE sequence > 0
           ORDER BY sequence ASC)
     LIMIT 1)
LIMIT 1

子查询或联接。可以在相对列上联接三个表,也可以嵌套它们直到到达第一个表

SELECT w_bildurl 
FROM adempiere.w_bilder 
WHERE w_bilder_id = 
      (SELECT w_bilder_id 
      FROM adempiere.w_homepage_image 
      WHERE w_homepage_package_id IN 
           (SELECT sequence,  
           w_homepage_package_id                            
           FROM adempiere.w_homepage_package
           WHERE sequence > 0
           ORDER BY sequence ASC)
     LIMIT 1)
LIMIT 1

尝试此查询,如果需要,使用join

SELECT 
    whp.sequence, 
    whp.w_homepage_package_id 
FROM 
    adempiere.w_homepage_package as whp
    NATURAL JOIN 
        adempiere.w_homepage_image as whi
    NATURAL JOIN 
        adempiere.w_builder as wbr
WHERE 
    whp.sequence > 0
ORDER BY whp.sequence ASC;

尝试此查询,如果需要,使用join

SELECT 
    whp.sequence, 
    whp.w_homepage_package_id 
FROM 
    adempiere.w_homepage_package as whp
    NATURAL JOIN 
        adempiere.w_homepage_image as whi
    NATURAL JOIN 
        adempiere.w_builder as wbr
WHERE 
    whp.sequence > 0
ORDER BY whp.sequence ASC;

尝试此查询,如果需要,使用join

SELECT 
    whp.sequence, 
    whp.w_homepage_package_id 
FROM 
    adempiere.w_homepage_package as whp
    NATURAL JOIN 
        adempiere.w_homepage_image as whi
    NATURAL JOIN 
        adempiere.w_builder as wbr
WHERE 
    whp.sequence > 0
ORDER BY whp.sequence ASC;

尝试此查询,如果需要,使用join

SELECT 
    whp.sequence, 
    whp.w_homepage_package_id 
FROM 
    adempiere.w_homepage_package as whp
    NATURAL JOIN 
        adempiere.w_homepage_image as whi
    NATURAL JOIN 
        adempiere.w_builder as wbr
WHERE 
    whp.sequence > 0
ORDER BY whp.sequence ASC;

使用JOIN关键字,它会让你的生活更轻松


检查这里:

使用JOIN关键字,它会让你的生活更轻松


检查这里:

使用JOIN关键字,它会让你的生活更轻松


检查这里:

使用JOIN关键字,它会让你的生活更轻松


检查这里:

应该可以正常工作

$res =  "SELECT A.*, B.w_bilder_id, C.w_bildurl FROM w_homepage_package A, w_homepage_image B,w_bilder C WHERE A.sequence>O  AND B.w_homepage_package_id=A.sequence AND C.w_bildurl=B.w_bilder_id ORDER BY A.sequence ASC"; 
$result = pg_query($dbconn, $res); 
while ($promo = pg_fetch_row($result)) 
{

}

应该可以正常工作

$res =  "SELECT A.*, B.w_bilder_id, C.w_bildurl FROM w_homepage_package A, w_homepage_image B,w_bilder C WHERE A.sequence>O  AND B.w_homepage_package_id=A.sequence AND C.w_bildurl=B.w_bilder_id ORDER BY A.sequence ASC"; 
$result = pg_query($dbconn, $res); 
while ($promo = pg_fetch_row($result)) 
{

}

应该可以正常工作

$res =  "SELECT A.*, B.w_bilder_id, C.w_bildurl FROM w_homepage_package A, w_homepage_image B,w_bilder C WHERE A.sequence>O  AND B.w_homepage_package_id=A.sequence AND C.w_bildurl=B.w_bilder_id ORDER BY A.sequence ASC"; 
$result = pg_query($dbconn, $res); 
while ($promo = pg_fetch_row($result)) 
{

}

应该可以正常工作

$res =  "SELECT A.*, B.w_bilder_id, C.w_bildurl FROM w_homepage_package A, w_homepage_image B,w_bilder C WHERE A.sequence>O  AND B.w_homepage_package_id=A.sequence AND C.w_bildurl=B.w_bilder_id ORDER BY A.sequence ASC"; 
$result = pg_query($dbconn, $res); 
while ($promo = pg_fetch_row($result)) 
{

}

这应该是正确的左连接查询(如果我没有忘记的话)

要了解JOIN,请考虑产品笛卡尔:

Table1
f1  f2
----------
a   1
b   4
c   5

Table2
f3  f4
----------
a   aa
b   cc

f1  f2  f3  f4
--------------------------
a   1   a   aa
a   1   b   cc
b   4   a   aa
b   4   b   cc
c   5   

Table1 LEFT JOIN Table2 ON f1 = f3

a   1   a   aa
b   4   b   cc
c   5

Table1 INNER JOIN Table2 ON f1 = f3
a   1   a   aa
b   4   b   cc

wikypedia有一个很好的例子,这应该是正确的左连接查询(如果我没有忘记任何东西的话)

要了解JOIN,请考虑产品笛卡尔:

Table1
f1  f2
----------
a   1
b   4
c   5

Table2
f3  f4
----------
a   aa
b   cc

f1  f2  f3  f4
--------------------------
a   1   a   aa
a   1   b   cc
b   4   a   aa
b   4   b   cc
c   5   

Table1 LEFT JOIN Table2 ON f1 = f3

a   1   a   aa
b   4   b   cc
c   5

Table1 INNER JOIN Table2 ON f1 = f3
a   1   a   aa
b   4   b   cc

wikypedia有一个很好的例子,这应该是正确的左连接查询(如果我没有忘记任何东西的话)

要了解JOIN,请考虑产品笛卡尔:

Table1
f1  f2
----------
a   1
b   4
c   5

Table2
f3  f4
----------
a   aa
b   cc

f1  f2  f3  f4
--------------------------
a   1   a   aa
a   1   b   cc
b   4   a   aa
b   4   b   cc
c   5   

Table1 LEFT JOIN Table2 ON f1 = f3

a   1   a   aa
b   4   b   cc
c   5

Table1 INNER JOIN Table2 ON f1 = f3
a   1   a   aa
b   4   b   cc

wikypedia有一个很好的例子,这应该是正确的左连接查询(如果我没有忘记任何东西的话)

要了解JOIN,请考虑产品笛卡尔:

Table1
f1  f2
----------
a   1
b   4
c   5

Table2
f3  f4
----------
a   aa
b   cc

f1  f2  f3  f4
--------------------------
a   1   a   aa
a   1   b   cc
b   4   a   aa
b   4   b   cc
c   5   

Table1 LEFT JOIN Table2 ON f1 = f3

a   1   a   aa
b   4   b   cc
c   5

Table1 INNER JOIN Table2 ON f1 = f3
a   1   a   aa
b   4   b   cc

wikypedia有一个很好的例子,使用join。选中UseJoin。选中UseJoin。选中UseJoin。检查我在adempiere上看到一个“builder”而不是“bilder”,一个e缺失,但无论哪种方式它都返回:查询失败:错误:w\u homepage\u image.w\u hompage\u package\u id列不存在第4行:…adempiere.w\u homepage\u package.sequence=adempiere…^灌输2个打字错误(adempier,hompage),但现在可以了。我会尽力去理解它。谢谢我想我已经修复了:)我在adempiere上看到了一个“builder”而不是“bilder”,并且缺少一个e,但无论哪种方式它都会返回:查询失败:错误:w_homepage_image.w_hompage_package_id列不存在第4行:…adempiere.w_homepage_package.sequence=adempiere灌输2个打字错误(adempier,hompage),但现在可以了。我会尽力去理解它。谢谢我想我已经修复了:)我在adempiere上看到了一个“builder”而不是“bilder”,并且缺少一个e,但无论哪种方式它都会返回:查询失败:错误:w_homepage_image.w_hompage_package_id列不存在第4行:…adempiere.w_homepage_package.sequence=adempiere灌输2个打字错误(adempier,hompage),但现在可以了。我会尽力去理解它。谢谢我想我已经修复了:)我在adempiere上看到了一个“builder”而不是“bilder”,并且缺少一个e,但无论哪种方式它都会返回:查询失败:错误:w_homepage_image.w_hompage_package_id列不存在第4行:…adempiere.w_homepage_package.sequence=adempiere灌输2个打字错误(adempier,hompage),但现在可以了。我会尽力去理解它。谢谢我想我把它修好了:)我必须用A、B和C来代替一些东西来做这个工作吗?我必须用A、B和C来代替一些东西来做这个工作吗?我必须用A、B和C来代替一些东西来做这个工作吗?