通过另一个表的ID从一个表中获取价值

时间:2019-04-17 10:08:38

标签: php sql

所以基本上我有一个表:“任务”:

` IDirectory artifactStorePath = new FixedPath("E:\\MongoDB_Location_fileee");
                    ITempNaming executableNaming = new UUIDTempNaming();
                    IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder()
                            .defaults(Command.MongoD)
                            .artifactStore(new ExtractedArtifactStoreBuilder()
                                    .defaults(Command.MongoD)
                                    .download(new DownloadConfigBuilder()
                                            .defaultsForCommand(Command.MongoD)
                                            .artifactStorePath(artifactStorePath))
                                    .executableNaming(executableNaming))
                            .build();`

还有一个“ moradas”表:

- id   -  morada -
-  1   -    1   -

我想通过- ID - Morada - CodPostal - 1 - Street 1th - 1523 从任务表中获取task.Address表中的地址和邮政编码。现在,我只在行程表中显示地址的整数值。

moradas

我现在要查询的是这个

<td><?php echo $fetch['address']?></td>

如何从具有该int的地址表中获取值并在回显中显示它们?

3 个答案:

答案 0 :(得分:1)

您可以使用INNER JOIN来连接两个表并从中获取数据。

INNER JOIN在此上下文中使用,假设数据库Trip中的每个地址ID对应于数据库表address中的实际地址。

SELECT T.Trip, A.Address, A.Postal_Code FROM Trip T
INNER JOIN address A ON T.Address = A.Address_ID

注意:

您指定的字段名称包含空格。

我添加了下划线而不是空格。

请在此处输入正确的字段名称。

Reference:

编辑:

根据更新的问题更新查询:

SELECT T.id, A.Morada, A.CodPostal FROM task T
INNER JOIN moradas A ON T.morada = A.ID

答案 1 :(得分:1)

已根据您的表和列进行更新。 如果您想要addresspostal值匹配的task.idmoradas.id代码,则应该联接两个表并获得addresspostal code来自moradas表- 试试这个:-

$sql = "SELECT
  task.id,
  CONCAT(
    moradas.`Morada`,
    ' ',
    moradas.`CodPostal`
  ) AS address
FROM
  task
  LEFT JOIN moradas
    ON (task.id = moradas.id)
WHERE task.`status` != 'Done'
ORDER BY task.id ASC";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Address : " . $row["address"]."<br>";
    }
} else {
    echo "0 results returned";
}
$conn->close();

我假设您的status表中有task

此查询将您的addresspostal代码显示为一列address。如果您希望将它们分成不合理的列,则可以跳过concat并分别选择MoradaCodPostal

答案 2 :(得分:0)

请始终遵循此方案,因为我将向您显示有关表名的信息 如果您在MySQL中有大数据,例如name。邮政编码ID。并假设您在另一个与其他跟踪服务相关的表中有地址,例如

$ret = mysql_query("select t2.id, t2.name, t2.phone, t1.address From t2 Left join t1 on t2.id = t1.id where t2.id = $id ")
// $id = is variable you get from php request like $_GET and id table should have index in MySQL then do the following 
echo'<table>'
While ($row = mysql_fetch_assoc($ret) { 
echo"<td>" .$row["addresse"]."<td>";
// repeat this for all retrieved data 
}
echo '</table>'

现在,您将在php输出中具有表,其中包含查询中的所有数据。

  • 如果查询返回一条记录,则表将有一个结果
  • 如果查询结果有10000条记录,则表将有10000条

您可以在查询中设置限制以每个请求检索100个结果