IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
joshiko
Člen
Avatar
joshiko:22.2.2018 12:44

ahoj,

omlouvám se za primitivní dotaz začátečníka, ale poradíte mi prosím, jak z funkčního INSERTU udělat DELETE?
SELECT * FROM visit2 LEFT JOIN kosik ON visit2.navst=ko­sik.id_navst WHERE kosik.id_navst IS NULL AND DATEDIFF(NOW(),vi­sit_stamp)>0

Děkuji

 
Odpovědět
22.2.2018 12:44
Avatar
joshiko
Člen
Avatar
joshiko:22.2.2018 12:51

Oprava: jak z uvedeného SELECTu udělat DELETE.....

 
Nahoru Odpovědět
22.2.2018 12:51
Avatar
Miroslav Holubek:22.2.2018 15:15

Skús vymeniť SELECT * za DELETE

 
Nahoru Odpovědět
22.2.2018 15:15
Avatar
Odpovídá na joshiko
Michal Štěpánek:22.2.2018 15:48

napiš to podle vzoru (samozřejmě se svými údaji)

DELETE FROM Tabulka WHERE Podmínka

Žádný JOINy tam nepiš, u DELETE jsou k ničemu, ale ta podmínka je velmi důležitá, jinak si smažeš celou tabulku!!!

Editováno 22.2.2018 15:49
Nahoru Odpovědět
22.2.2018 15:48
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
joshiko
Člen
Avatar
joshiko:22.2.2018 15:51

dík, ale to jsem zkoušel. nefunguje nic z tohoto:

DELETE FROM visit2 WHERE LEFT JOIN kosik ON visit2.navst=ko­sik.id_navst WHERE kosik.id_navst IS NULL AND DATEDIFF(NOW(),vi­sit2_stamp)>0

DELETE FROM visit2 WHERE IN (LEFT JOIN kosik ON visit2.navst=ko­sik.id_navst WHERE kosik.id_navst IS NULL AND DATEDIFF(NOW(),vi­sit2_stamp)>0)

DELETE FROM visit2 IN (SELECT LEFT JOIN kosik ON visit2.navst=ko­sik.id_navst WHERE kosik.id_navst IS NULL AND DATEDIFF(NOW(),vi­sit2_stamp)>0)

DELETE FROM visit2 LEFT JOIN kosik ON visit2.navst=ko­sik.id_navst WHERE kosik.id_navst IS NULL AND DATEDIFF(NOW(),vi­sit2_stamp)>0

 
Nahoru Odpovědět
22.2.2018 15:51
Avatar
joshiko
Člen
Avatar
joshiko:22.2.2018 16:02

když to dám bez JOINů:

DELETE FROM visit2 WHERE visit2.navst=ko­sik.id_navst AND kosik.id_navst IS NULL AND DATEDIFF(NOW(),vi­sit2_stamp)>0

tak to hlásí: #1054 - Unknown column 'kosik.id_navst' in 'where clause'

potřebuji to nějak propojit s tabulkou kosik, aby se mi mazalo ve visit2 co není v kosik

 
Nahoru Odpovědět
22.2.2018 16:02
Avatar
plelovsky
Člen
Avatar
plelovsky:22.2.2018 17:45

1.

DELETE visit2
FROM
        visit2
        LEFT JOIN kosik ON visit2.navst = kosik.id_navst
WHERE
        kosik.id_navst IS NULL
        AND
        DATEDIFF(NOW(), visit_stamp) > 0

2.

DELETE FROM visit2
WHERE
        navst NOT IN (
                SELECT id_navst FROM kosik
        )
        AND
        DATEDIFF(NOW(), visit_stamp) > 0

3.

DELETE FROM visit2
WHERE
         NOT EXISTS (
                SELECT * FROM kosik WHERE id_navst = visit2.navst
        )
        AND
        DATEDIFF(NOW(),visit_stamp) > 0
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
22.2.2018 17:45
Avatar
joshiko
Člen
Avatar
joshiko:23.2.2018 11:00

Mnohokráte děkuji, všechny 3 varianty fungují jak mají.
Ještě jednou dík.

 
Nahoru Odpovědět
23.2.2018 11:00
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.