如何将两个表关联起来显示名称行而不是mysql + pdo中的id

时间:2013-06-23 16:42:53

标签: mysql pdo innodb relation

我不知道在显示表1的结果时如何显示表2中行的名称而不是他的id。

让我解释一下:

我在innoDB中有这些表:

- PACIENTES(table name).
    * id  (int)
    * nombre (varchar)
    * apellido (varchar)
    * pais (varchar)
    * departamento (varchar)
    * ciudad (varchar)

- lista_paises(table name).
    * id  (int)
    * opcion (varchar)

- lista_departamento(table name).
    * id_departamento  (int)
    * opcion (varchar)
    * relacion (int)-----relation with table lista_paises----

- MUNICIPIOS(table name).
    * id_municipio  (int)
    * id_departamento (int)-----relation with table lista_departamento----
    * municipio_nombre (varchar)

在表pacientes我保存了lista_paises,lista_departamento,municipios的id

---- ---- ID NOMBRE ----- ----- apellido派斯---- ----阿雅城

  1    Juan    Perez     10      178        198

我需要在页面中显示

 id   nombre  apellido     pais        departamento        ciudad

  1    Juan    Perez     El Salvador      Santa Ana        Santa Ana

我有这个句子(另一个与departamento相同的句子是相同的),但没有显示真正的离开或真正的ciudad ...总是只显示一个id为1的部门或者城市

<?
    $sql = "SELECT PACIENTES.ciudad, MUNICIPIOS.municipio_nombre 
    FROM PACIENTES INNER JOIN MUNICIPIOS 
    ON MUNICIPIOS.id_departamento = PACIENTES.ciudad";
    $stmt = $conn->prepare($sql);
    $stmt->execute(); 
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    $municipio_nombre = $row['municipio_nombre'];
?>

<td><? echo $municipio_nombre ?></td>

我很抱歉,如果我的问题太久或者不太了解,但说实话,我不知道如何更好地解释这个问题......我希望你能帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

您在表格中有nombre_municipio,在查询中有MUNICIPIOS.municipio_nombre

同样ON MUNICIPIOS.id_departamento = PACIENTES.ciudad正在将varchar与int进行比较

要加入MUNICIPIOSPACIENTES,您需要在PACIENTES.id表中提供与MUNICIPIOS相关的字段,例如(MUNICIPIOS.id_pacientes

$sql = "SELECT PACIENTES.ciudad, MUNICIPIOS.municipio_nombre 
    FROM PACIENTES 
    INNER JOIN MUNICIPIOS 
    ON  PACIENTES.id = MUNICIPIOS.id_pacientes";