Hallo

Ik probeer mijn database om te zetten van MySQL naar SQLite. Mijn queries moeten dus ook aangepast worden. Ik zoek een query die hetzelfde resultaat oplevert in SQLite als deze in MySQL:


SELECT * FROM (
      SELECT tbl1.*, tbl2.id, tbl2.cheese AS cheese
      FROM tbl1 LEFT JOIN tbl2 ON tbl1.cheese = tbl2.id
      WHERE time <= NOW() ORDER BY time DESC
    ) AS derived
    GROUP BY id
    LIMIT 5


Aangezien de NOW() functie niet bestaat lijkt het mij voldoende om een alternatief daarvoor te hebben? DATETIME('NOW') doet het niet..

Bedankt
Volgens mij klopt je query niet. Je zegt dat je de resultaten wilt groeperen op id, maar wat moet er dan precies gegroepeerd worden? Je hebt geen SUM of COUNT aggregate functie in je SELECT query, dus als er al dubbele id's in je derived table voorkomen, heb je geen idee welke waarden van die rows de uiteindelijke row voor dat id gaan vormen.

Als je in MySQL "SET SESSION sql_mode = 'TRADITIONAL,ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO';" als eerste query uitvoert, (zodat MySQL strenger wordt en van je verwacht dat je specifieker bent met wat je nu precies wilt) zou het heel goed kunnen zijn dat je oorspronkelijke query ook niet meer werkt.
Solved, werkte niet zoals het hoorde omdat die functie mij een tijdstip 2uur te vroeg teruggaf.. Geen idee vanwaar dat komt, maar heb er dan maar DATETIME('NOW', '+2 hours') van gemaakt.

tbl1 heeft geen id. Waarom niet? Ik gebruik dus SQLite en deze heeft standaard een 'rowid' veld. MySQL is mijn tussenweg. Ik gebruik normaal gezien altijd een id maar hier was het makkelijker om het even weg te laten.

Reageren