Podmíněné vložení záznanu existencí jiného – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Podmíněné vložení záznanu existencí jiného – MySQL – Fórum – Programujte.comPodmíněné vložení záznanu existencí jiného – MySQL – Fórum – Programujte.com

 

hrach
~ Redaktor
+1
Boss
9. 3. 2008   #1
-
0
-

Ahoj, potřeboval bych napsat sql dotaz, který pokud neexistuje záznam v jiné tabulce updatuje záznam jinde.


Něco ve stylu:

update [table]

set [neco] = 'ano'
where
count(select id from [table2] where a = b) = 0
snad jsem myšlenku vyjádřil dobře, ale vůbec nevím, jak to napsat..

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
Paja2
~ Moderátor
+2
Věrný člen
9. 3. 2008   #2
-
0
-

To hrach : chceš to pomocí jednoho dotazu ?

Nahlásit jako SPAM
IP: 88.146.215.–
hrach
~ Redaktor
+1
Boss
9. 3. 2008   #3
-
0
-

jj, právě pomocí jednoho dotazu..

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
hrach
~ Redaktor
+1
Boss
9. 3. 2008   #4
-
0
-

tak, už jsem to vyřešil, následovně:

update codes

set rators = rators + 1, rating = rating + 2
where
(select count(*) from ratings where code_id = 10 and user_id = 2592) = 0
and id = 10
toto je konkrétní sql, ale myslím, že princip je snad jasný :) snad to někdy někomu pomůže

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
stepan0
Newbie
10. 3. 2008   #5
-
0
-

Vyhnul bych se použití count, protože v tomto případě se provede prohledání celé tabulky (příp. indexu). Tebe ale zajímá, jestli (ne)existuje alespoň jeden záznam - v ideálním případě se při nalezení prvního záznamu nemusí procházet zbytek tabulky (indexu), což ušetří další prostředky. Proto bych se porozhlédl po funkci exist. Konkrétní "úspora" závisí na implementaci (MySQL, Oracle, MS atd.) a velikosti tabulky/indexu - změřit lze pomocí exekučního plánu nebo tracování.

Nahlásit jako SPAM
IP: 80.95.102.–
hrach
~ Redaktor
+1
Boss
10. 3. 2008   #6
-
0
-

To stepan : potřebuji právě dotaz pro mysql a funkci exist jsem nikde nenašel.

Nahlásit jako SPAM
IP: 195.113.171.–
http://jan.skrasek.com@hrachcz – webdeveloper
hrach
~ Redaktor
+1
Boss
10. 3. 2008   #7
-
0
-
Nahlásit jako SPAM
IP: 195.113.171.–
http://jan.skrasek.com@hrachcz – webdeveloper
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

Podmíněné formuláře — založil Wabi

PeekMessage z jiného okna — založil ingiraxo

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý