Estoy tratando de aprender MySQL, así que he creado un pequeño sistema de blog.MySQL: Obtener publicaciones de categorías
Tengo 3 tablas en MySQL:
posts
:
id | title
----------------
1 | Post Title 1
2 | Post Title 2
categories
:
id | title | parent
--------------------------------
10 | category10 | 0
11 | category11 | 0
12 | category12 | 10
post_category_relations
:
id | post_id | category_id
----------------------------------
1 | 1 | 10
2 | 2 | 12
3 | 3 | 11
Cada puesto puede tener varias categorías, su relación se almacena en post_category_relations:?
Así que cuando vuelva a index.php categoría = 10, me gustaría obtener cada puesto lo que se relaciona con category10
incluyendo los mensajes de su carpeta secundaria category12
también.
Mi inacabada de fragmentos en PHP
$folder_id = $_GET["category"]; // Get Category ID from the URL
$sql = "SELECT * FROM posts
JOIN categories
JOIN post_category_relations
// And I don't really know what should I do here
// because I need the child categories first, then the relations
// then I can get the post too from the post_id of the relations
";
mysql_query($sql);
Sé que esto requerirá conocimientos avanzados de MySQL, pero cualquier ayuda se agradece! Ya hice esto en PHP, pero necesito usar 4 loops, que no es la mejor manera de hacerlo cuando es posible en MySQL, aún no sé cómo :)
en primer lugar si debe escapar de su entrada get antes de hacer una consulta (para evitar inyecciones de SQL) esto: $ folder_id = $ _GET ["category"]; debería ser: $ folder_id = mysql_real_escape_string (stripslashes ($ _ GET ["category"])); – Tim
También sugiero que lea los artículos proporcionados @Denis. Aprenderás mucho :) Yo mismo leo eso varias veces. – Rifat
Usar variables de sesión de MySQL: http://explainextended.com/2009/09/29/adjacency-list-vs-nested-sets-mysql/. También vea esta pregunta para otras opciones: http://stackoverflow.com/questions/4048151/what-are-the-options-for-storing-hierarchical-data-in-a-relational-database – orangepips