Hello,
insert into zahl (zahl) select distinct 25 from zahl where 25 not in (select zahl from zahl);
Deine Abfrage liefert zu viele (Zwischen-)Ergebnisse.
stimmt leider.
DISTINCT ist nicht der beste Weg, sondern die Abfrage so zu gestalten, dass die gewünschte Anzahl herauskommt. Du fragst hier alle Reihen ab, in denen 25 nicht vorkommt. Das kann eine recht große Menge werden. Die interessiert dich aber gar nicht. Im Gegenteil, sie ist viel zu groß, weil du nur eine Ergebniszeile haben willst, und nicht so viele wie Datensätze in zahl vorhanden sind. Auf diese unsinnig große Menge lässt du dann DISTINCT los, was herauszufinden versucht, wieviele unterschiedliche Werte es gibt. Deswegen hab ich in meinem Vorschlag ein Subselect im FROM stehen, denn das liefert nur exakt einen Datensatz, der dann entweder genommen wird oder nicht.
Dann also besser so für die Terminverwaltung:
$sql =
"insert into termin (id, start, ende)
select null, '$start', '$ende'
from (select null as id, '$start' as start, '$ende' as ende) as dummy
where (select count(*)
from termin
where ende
>= '$start' and start <= '$ende') = 0";
$start und $ende sind vrher ins passende Format zu bringen.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg