首页 > 解决方案 > 从具有公共列的两个表中选择全部 - 相同的列名

问题描述

桌子banners

| id | src       | roll |w  |...|
-------------------------
| 1  | blue.jpg  | 7    |120|...|
| 2  | white.jpg | 5    |250|...|
| 3  | green.jpg |      |140|...|

桌子brolls

| id | src        |...|
-------------------
| 4  | jones.jpg  |...|
| 5  | abba.jpg   |...|
| 7  | italia.jpg |...|

我需要allboth表 中选择

表有不同的列数

并非所有行banners都有roll

banners.roll实际上是brolls.id

while ($row = $st->fetch()){
    $items .=
    "<img src = '" . $row['banners.src'] . "'
    data-id = " . $row['banners.id'] . "
    data-roll = '" . $row['brolls.src'] . "'
    data-w = " . $row['banners.w'] . "
    alt='img'>\n\n";
}

所以最终结果应该是:

<img src = 'blue.jpg' data-id=1 data-roll='italia.jpg' data-w=120 alt='img'>

我需要以这种方式列出all的图像。banners

有什么帮助吗?

标签: phpmysql

解决方案


您没有指定您拥有的数据库类型。我猜你正在使用mysql。你可以更清楚地说出你想要什么。我猜你正在寻找 SQL 查询和 PHP 代码来按你想要的方式对结果进行排序。

这是一个建议。

SQL 必须是:

$sql_a = 'SELECT id, src, roll, w FROM banners';
$sql_b = 'SELECT id, src FROM brolls';

您应该在 2 个不同的查询中获取所有这些,并形成 2 个不同的数组,每个数组一个:$array_banners 和 $array_brolls; 具有下一个结构:

$array_banners['id value'] = array('src' => 'src value', 'roll' => 'roll value', 'w' => 'w value')

$array_brolls['id value'] = 'src value';

然后您将进行图像 html 编码:

foreach( $array_banners as $k => $v)
{
"<img src = '" . $v['src'] . "'
    data-id = " . $k . "
    data-roll = '" . $array_brolls[$v['roll']]['src'] . "'
    data-w = " . $v['w'] . "
    alt='img'>\n\n"
};

并准备好了。


推荐阅读