Ich schreibe eine PHP-Datei, um den letzten Beitrag aus meiner Datenbank anzuzeigen. Ich finde den letzten Beitrag, aber einige letzte Beiträge haben keinen Titel. Ich möchte den letzten Beitrag und jeden Beitrag anzeigen, der nicht die Titelkopie des Beitrags hat, der den Titel hat und dieselbe contentid.my-Datenbank ist. Ich bereite ein Bild vor, das ein Beispiel für meine Datenbank ist

das Beispielbild

Dies ist mein php Code:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "vbtest";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT title , nodeid FROM node where contenttypeid='30' order by nodeid desc limit 10";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "title: " . $row["nodeid"]. " title: " . $row["title"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

Kann mir jemand helfen?

1
ali.b 2 Jän. 2016 im 12:25

2 Antworten

Beste Antwort

Also, wie man nur einen eindeutigen Titel und die erste Knoten-ID mit Sortierung belässt.

SELECT * FROM
(SELECT T.title,
       MIN(nodeid) AS nodeid
FROM
    (SELECT
           (SELECT N2.title FROM node AS N2
            WHERE N2.contentid = N.contentid
                  AND N2.starter = N.starter
            ORDER BY N2.nodeid ASC
            LIMIT 1) AS title,
            nodeid
    FROM node AS N
    WHERE contentid='30' 
    ORDER BY nodeid DESC LIMIT 10) AS T
GROUP BY title 
) AS T2
ORDER BY nodeid DESC
0
fabulaspb 2 Jän. 2016 im 12:40

Ich denke, Unterabfragen helfen, Ihr Ziel zu archivieren. In der folgenden SQL-Abfrage findet die Unterabfrage den ersten Titel für die Inhalts-ID aus der äußeren Abfrage.

$sql = "
SELECT 
       (SELECT N2.title FROM node AS N2
        WHERE N2.contentid = N.contentid
                  AND N2.starter = N.starter
        ORDER BY N2.nodeid ASC
        LIMIT 1) AS title,
        N.nodeid
FROM node AS N
WHERE contentid='30' 
ORDER BY nodeid DESC LIMIT 10";
0
fabulaspb 2 Jän. 2016 im 11:15