Ik heb 2tabellen in de database, met bijna dezelfde gegevens:
TabelA:
id
naam
text
TabelB:
id
naam
text
aantal
(er zijn nog wel wat rijen maar die doen er niet toe)
Nu de gegevens die in tabel A staan die zouden vervolgens ook in TabelB moeten komen, de enigste voorwaarde is dat er uit tabelA enkel gegevens gehaald worden welke niet voorkomen in de laatste 5rijen van tabelB. (het zijn bijna dubbele gegevens in tabel A en B, na 5anderen mag er opnieuw dezelfde waarde komen)
SELECT a.id, a.naam, a.text
FROM tabelA a
LEFT JOIN (
SELECT naam, text
FROM tabelB
ORDER BY id DESC
LIMIT 5
) b ON (
b.naam = a.naam
AND b.text = a.text
)
WHERE b.naam IS NULL
AND b.text IS NULL
Deze query joined tabel A met een subset van tabel B (alleen de laatste 5 records, uitgaande van een oplopend id) en selecteert dan die rijen waarvan b.naam en b.text leeg zijn. Met andere woorden de records uit A die geen waarde hebben uit B. Probeer dit eerst eens, met enige inventiviteit kan je hier meteen een insert mee doen om de gevonden records in te voeren.
neen, het is een soort auto mailer, ik moet dus zowizo een tabel hebben waar de mailings instaan die vaker gestuurd mogen worden, en een tabel waarin de verstuurde mailings staan.
@Erwin, ik zal straks even proberen of dat lukt ;-)
mailings (hier komen de mails welke vaker gestuurd mogen worden)
mail (hier staan alle mails in die reeds verstuurd zijn in het verleden.)
dit moet toch altijd met 2 verschillende tabellen?
Je maakt het nu een stuk duidelijker.
Het mag (en kan goed) in 2 tabellen, maar is niet persee nodig.
Je moet aan zoiets denken:
INSERT INTO mail
(mailing_id, naam, bericht)
SELECT
id, naam, bericht
FROM
mailings
WHERE
id NOT IN
(SELECT mailing_id FROM mail ORDER BY senddate DESC LIMIT 5)
Als je MYSQL dat niet ondersteund zoals de melding zegt.
Kun je dan niet beter zorgen dat je die nieuwste versie MYSQL kan/gaat gebruiken.
indien hosting bij een derde partij zou ik die mailen en vragen om een MYSQL update.
Ik kan mij daarnaast geen versie voor de geest halen welke dit niet zal ondersteunen om eerlijk te zijn.