2016-04-02 17 views
1

Ich fragte mich, ob jemand könnte etwas Licht auf ein MySQL/PHP-Problem, das ich habe.Wählen Sie aus gemeinsamen Tabellen php/mysql

Ich habe die folgenden zwei Tabellen.

Tabelle: Postedposts

|id   |textid  |modelid  |timeposted | 
|1   |2   |1   |0000-00-00 00:00:00| 

Tabelle: Text

|textid  |text  | 
|2   |hello  | 

Ich brauche zufällig einen Textwert aus der Tabelle Text auszuwählen, in dem die textid hat sich in Tabelle Postedposts nie eingesetzt worden ist für einen bestimmten modelid. Wenn dies keine Ergebnisse liefert, muss ich zufällig einen Textwert aus der Tabelle Text auswählen, wo die Text-ID innerhalb der letzten 7 Tage nicht in die Tabelle Postedposts für eine bestimmte Modelid eingefügt wurde.

Bis jetzt habe ich den folgenden Code für das Anfangsproblem, aber ich kann nicht herausfinden, wie man es auf ein bestimmtes Modelid beschränkt.

$sql=" 
     select Text.textid,Text.text 
     from Text left join Postedposts on Text.textid = Postedposts.textid 
     where ((Postedposts.textid IS NULL)) ORDER BY RAND() LIMIT 1 
"; 


$result=mysqli_query($conn,$sql); 
$row=mysqli_fetch_assoc($result); 
$text = $row['text']; 

Jede Hilfe wird sehr geschätzt.

Danke :)

Antwort

0

Eine HAVING-Klausel sollte funktionieren.

Etwas wie:

select Text.textid,Text.text 
    from Text left join Postedposts on Text.textid = Postedposts.textid 
    where ((Postedposts.textid IS NULL)) HAVING modelid = 123 ORDER BY RAND() LIMIT 1 
+0

Leider scheint dies nicht zu funktionieren. – melonsf0rsale

0

Falls jemand frage mich, ich dies schließlich gelöst mich mit den folgenden:

$modelid = 1; 
$minustime = date('Y-m-d H:i:s', strtotime('-7 days')); 

$sql = "SELECT a.* 
FROM Text a 
LEFT JOIN Postedposts b 
    ON a.textid = b.textid AND 
     b.modelid = ".$modelid." 
AND b.timeposted > '".$minustime."' 
WHERE (b.textid IS NULL) ORDER BY RAND() LIMIT 1"; 

$result = $conn->query($sql); 
if ($result->num_rows > 0) { 

while($row = $result->fetch_assoc()) { 

$text = $row['text']; 

echo "<br><br>".$text; 

} 

} 
else 
{ 
echo "no rows"; 
} 

Bitte lassen Sie mich wissen, ob/wie diese verbessert werden kann? Danke

Verwandte Themen