Estoy desarrollando un sitio donde las personas pueden publicar sus casas en alquiler. Estoy usando PHP 5.2.0 y MySQL 5+Cómo unir varias tablas relacionadas por otras tablas
las publicaciones se almacenan en una tabla como ésta
ta_publications
+---+-------------+------+
|id | name | date |
+---+-------------+------+
| 1 | name_001 | ... |
| 2 | name_002 | ... |
| 3 | name_003 | ... |
+---+-------------+------+
tengo diferentes publicaciones, que tienen "características" como "Internet", "hecho service "," satellite tv ", etc.
Estas características pueden cambiar en el futuro, y quiero poder agregarlas/eliminarlas/modificarlas, así que las almaceno en la base de datos en una tabla.
ta_features
+---+-------------+
|id | name |
+---+-------------+
| 1 | Internet |
| 2 | Wi-Fi |
| 3 | satelital tv|
+---+-------------+
que están relacionados con las publicaciones utilizando la siguiente tabla
ta_publication_features
+---+-------------+----------------+
|id | type_id | publication_id |
+---+-------------+----------------+
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 3 | 1 |
+---+-------------+----------------+
Creo que es bastante fácil de entender; Hay una publicación llamada name_001 que tiene Internet, wi-fi y televisión satelital.
Tengo la misma técnica de esquema para las imágenes, les almacenar en esta tabla
ta_images
+---+-------------+
|id | src |
+---+-------------+
| 1 | URL_1 |
| 2 | URL_2 |
| 3 | URL_3 |
+---+-------------+
Y el uso de la siguiente tabla para relacionarlos con las publicaciones
ta_publication_images
+---+-------------+----------------+----------+
|id | img_id | publication_id | order |
+---+-------------+----------------+----------+
| 1 | 1 | 1 | 0 |
| 2 | 2 | 1 | 1 |
| 3 | 3 | 1 | 2 |
+---+-------------+----------------+----------+
el orden de columnas da el orden en el que las publicaciones deben mostrarse al enumerar una publicación única.
Philipp Reichart me proporcionó una consulta que buscará y obtendrá todas las publicaciones que tienen ciertas características. Funciona para enumerar las publicaciones, no puedo modificarlo para devolverme los datos que necesito.
Así que pensé que iba a ejecutar esa consulta y obtener todas las publicaciones que pasan los criterios de búsqueda y luego utilizar otra consulta para enumerarlas.
La lista de estas publicaciones debe incluir todos los datos de publicación (todo en ta_publications) + todas sus características + la más importante (orden 0) src de imagen.
Podría, para cada publicación, tener dos consultas simples que devolverán, por separado, la imagen más importante y todas las características que tiene, pero al listar 25 publicaciones por página, será 1 consulta de búsqueda + (2 querys por publicación * 25 publicaciones) = 51 consultas diferentes, claramente no muy eficientes.
EDIT:
Mi pregunta es, ¿cómo puedo crear una consulta SQL que, teniendo en cuenta algunos identificadores de publicación, volverá: todos los datos de publicación (todo en ta_publications) + todas sus características + el más importante (de orden 0) imagen src
pregunta bien escrita ya que eres tan nuevo. :) + vote – Layke
No ha hecho una pregunta. Muestra lo que estás tratando de lograr. –
¿Entonces está solicitando una consulta que devuelva todas las publicaciones, por identificación, incluidas sus características y la imagen superior? –