esperamos que usted puede ayudar,
Tengo 3 tablas
artículo
article_keywords_link
palabras clave
Ellos se unen entre sí, y estoy con ganas de lograr 1 artículo para su visualización en la página, pero le mostrará todas las palabras clave relacionadas que está relacionado con el artículo.
Todavía no he formateado esta página, im tratando de obtener la funcionalidad para el trabajo.
SELECT article.article_id, article.article_title, article.article_content, keywords.keyword_name
FROM article
JOIN article_keyword_link ON article.article_id = article_keyword_link.article_id
INNER JOIN keywords ON article_keyword_link.keyword_id = keywords.keyword_id
Ejecución de la consulta anterior en Phpmyadmin, que recibo estos resultados
Query Output from PhpmyAdmin
+------------+---------------+-------------------+--------------+
| article_id | article_title | article_content | keyword_name |
+------------+---------------+-------------------+--------------+
| 1 | Article 1 | Article 1 content | CCU |
| 1 | Article 1 | Article 1 content | WIFI |
| 1 | Article 1 | Article 1 content | Network |
| 2 | Article 2 | Article 2 content | Passenger |
| 2 | Article 2 | Article 2 content | Application |
+------------+---------------+-------------------+--------------+
Aquí es cómo se llenan las tablas
Table: article
+------------+---------------+-------------------+
| article_id | article_title | article_content |
+------------+---------------+-------------------+
| 1 | Article 1 | Article 1 content |
| 2 | Article 2 | Article 2 content |
+------------+---------------+-------------------+
Table: article_keywords_link
+------------+------------+
| article_id | keyword_id |
+------------+------------+
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 2 | 4 |
| 1 | 7 |
+------------+------------+
Table: keywords
+------------+--------------+
| keyword_id | keyword_name |
+------------+--------------+
| 1 | CCU |
| 2 | WIFI |
| 3 | Passenger |
| 4 | Application |
| 5 | Software |
| 6 | Hardware |
| 7 | Network |
+------------+--------------+
Fuente de la página:
<?php
include 'includes/db.php';
// Create connection
$conn = new mysqli($host, $username, $password, $database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "
SELECT article.article_id, article.article_title, article.article_content, keywords.keyword_name
FROM article
JOIN article_keyword_link ON article.article_id = article_keyword_link.article_id
INNER JOIN keywords ON article_keyword_link.keyword_id = keywords.keyword_id
";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "Article ID: " . $row["article_id"] . "<br>";
echo "Article Title: " . $row["article_title"] . "<br>";
echo "Article Content: " . $row["article_content"] . "<br>"
;
}
} else {
echo "0 results";
}
$conn->close();
?>
resultado de la página:
Article ID: 1
Article Title: Article 1
Article Content: Article 1 content
Article ID: 1
Article Title: Article 1
Article Content: Article 1 content
Article ID: 1
Article Title: Article 1
Article Content: Article 1 content
Article ID: 2
Article Title: Article 2
Article Content: Article 2 content
Article ID: 2
Article Title: Article 2
Article Content: Article 2 content
Así que hay dos problemas IM frente.
1. ¿Cómo puedo recuperar un solo artículo a la visualización de la página, mientras que muestra todas las palabras clave relacionadas con ese artículo?
2. ¿Cómo puedo ajustar mi código fuente para mostrar las palabras clave? Si añado un nuevo eco en el bucle de KEYWORD_NAME, la página no se carga.
Cualquier ayuda con esto sería muy apreciada
Ya casi ha terminado, prueba esto.
SELECT article.article_id, article.article_title, article.article_content, group_concat(keywords.keyword_name) as keywords
FROM article
JOIN article_keyword_link ON article.article_id = article_keyword_link.article_id
INNER JOIN keywords ON article_keyword_link.keyword_id = keywords.keyword_id
GROUP BY article.article_id
para obtener información sobre las funciones que se utilizan para lograr esto. por favor mira.
https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html
Además, si lo que desea es un artículo se agrega limit 1
al final de la consulta. y si desea que el más reciente / más antigua, deberá añadir ORDER BY article_id DESC LIMIT 1
para más nuevo y ORDER BY article_id ASC LIMIT 1
de más reciente