Stack Overflow en español Asked by Vikingo22 on November 12, 2021
Tengo el siguiente código en PHP para poder llamar a una tabla desde MySQL
$query = "SELECT * FROM lugar WHERE Nombre NOT LIKE '' ORDER By id_lugar LIMIT 25";
if (isset($_POST['consulta'])) {
$q = $conn->real_escape_string($_POST['consulta']);
$query = "SELECT * FROM lugar WHERE id_lugar LIKE '%$q%' OR Nombre LIKE '%$q%' OR ciuda LIKE '%$q%' OR region '$q' ";
}
El código, muestra la tabla ordenada como se encuentra en MySQL.
La tabla la tengo enlazada con primary y forean key a otra, pero quisiera insertar una columna a través de inner join, probando en phpmyadmin, funciona el metodo, pero no en el código php.
Tabla 1 – lugar
id_lugar
Nombre
ciudad
region
Tabla 2 – lugar_poblacion
id
id_lugar
id_poblacion
Tabla 3 – poblacion
id_poblacion
num_personas
num_casas
Quiero tomar la columna "num_personas" y añadirla a la tabla "lugar" a través de INNER JOIN
Puedes resolverlo con esta consulta más o menos:
SELECT
l.Nombre,
l.ciudad,
p.num_personas
FROM lugar_poblacion lp
INNER JOIN lugar l ON lp.id_lugar = l.id_lugar
INNER JOIN poblacion p ON lp.id_poblacion = p.id_poblacion
WHERE
l.id_lugar LIKE '%$q%' OR
l.Nombre LIKE '%$q%' OR
l.ciudad LIKE '%$q%' OR
l.region LIKE '%$q%'
Para mejor comprensión, puedes empezar los JOIN
por la tabla que hace de enlace entre lugar
y poblacion
y seguir a partir de ahí.
Si observas, he usado alias cortos para cada tabla, luego, esos mismos alias hay que usarlos para referirse a cada columna, sea en los JOIN
, sea en el SELECT
, sea en el WHERE
o en cualquier otra parte de la consulta.
Si hay alguna duda, dilo en comentarios.
El objetivo de los JOIN
es unir todas las tablas en un sólo conjunto de resultados.
Si necesitaras incorporar los criterios que aparecen en tu primera consulta, sólo tendrías que hacer esto:
SELECT
l.Nombre,
l.ciudad,
p.num_personas
FROM lugar_poblacion lp
INNER JOIN lugar l ON lp.id_lugar = l.id_lugar
INNER JOIN poblacion p ON lp.id_poblacion = p.id_poblacion
WHERE
l.id_lugar LIKE '%$q%' OR
l.Nombre LIKE '%$q%' OR
l.ciudad LIKE '%$q%' OR
l.region LIKE '%$q%' AND
l.Nombre NOT LIKE ''
ORDER By l.id_lugar LIMIT 25
Hemos agregado a la consulta el criterio Nombre NOT LIKE ''
como AND
no como OR
porque sería complementario a los otros, y hemos agregado el ORDER BY
Answered by A. Cedano on November 12, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP