Table "Server":MySQL Bedingungen zwischen zwei Tabellen
+----+----------------+
| id | disabled_until |
+----+----------------+
| 1 | 0 | // disabled_until is an epoch timestamp
| 2 | | // (irrelevant)
| 3 | 1468969442 |
+----+----------------+
Table "server_disables":
+----+-----------+-------+----------------+
| id | server_id | tld | disabled_until |
+----+-----------+-------+----------------+
| 1 | 1 | .com | 0 |
| 2 | 1 | .org | 1468969900 |
| 2 | 3 | .com | 1468969900 |
+----+-----------+-------+----------------+
ich eine Abfrage zu machen versuchen, die Zeilen aus Servern wählt wo:
- Es gibt 0 Zeilen in server_disables wo server_disables.server_id = servers.id oder
- Es gibt 1+ Reihen in server_disables wo server_disables.server_id = servers.id und die server_disables.disabled_until ist weniger als eine bestimmte Zeit (sagen wir, x)
Ich glaube, ich habe eine Abfrage erstellt, die # 2, aber nicht # 1 erreichen kann. Ich weiß nicht, wo ich weitermachen soll oder wie ich einen Fall hinzufügen kann, wenn es in server_disables 0 übereinstimmende Zeilen gibt. Sie können meinen Versuch in OR d.disabled_until IS NULL
sehen, aber es funktioniert nicht.
Abfrage:
SELECT s.* FROM servers s
INNER JOIN server_disables d ON (d.server_id = s.id AND d.tld = '.com')
WHERE (s.disabled_until < 1468984373)
AND (d.disabled_until < 1468984373 OR d.disabled_until IS NULL)
ORDER BY RAND() LIMIT 5
Meine Frage ist, wie meine Frage machen zeigen auch Zeilen aus der „Server“ Tabelle, wo es 0 Zeilen aus den INNER JOIN
verschmolzen.
Verwenden 'LINKS JOIN'. – Blank