Diskuze: Update sloupce když....
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí SQL a databází, jsme si ověřili nabyté zkušenosti z kurzu.
Toto bych potreboval udelat primo v databazi v myadminu. Pokud by bylo potreba i php nebranim se
Ahoj, pokud jsem to správně pochopil, tak by měl fungovat tenhle dotaz:
UPDATE t1
SET t1.t_id = 1
FROM myTable AS t1
INNER JOIN myTable AS t2
ON t1.Text = t2.Text AND t2.t_id = 1
WHERE t1.t_id = 0
Ta where podmínka na konci by se dala eventuálně vypustit, ale s ní mi to příjde takové čistší
Ahoj, díky za pomoc.
Tvůj dotaz by asi i mohl fungovat, ovšem nepřelouská 140 tisíc
řádků.
Trvá mu to dlouho a nakonec spadne.
A na čem ti běží databáze? 140K řádků by mělo být naprosto bez problémů, pokud to je nějak rozumně oindexované. Nejsem si úplně jistý jestli tenhle dotaz jde ještě nějak výrazně optimalizovat.
Mysql, phpmyadmin, endora, asi bude problém s těmi indexi. Řekl bych že
nemám index ani na jednom.
Viz:
http://www.jpeg.cz/…15/2limU.png
Přímo ten tvůj dotaz
UPDATE t1
SET t1.`t_id` = '1'
FROM songs AS t1
INNER JOIN songs AS t2
ON t1.`Text` = t2.`Text` AND t2.`t_id` = '1'
WHERE t1.`t_id` = 0
mi píše
#1064 - You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near 'FROM songs AS
t1
INNER JOIN songs AS t2
ON t1.Text
= t2.Text
AND t2.t_id
' at line
3
Já jsem ten dotaz testoval na MS SQL serveru, takže je možné že na MySQL bude trošku jiná syntaxe. S tím ti ale bohužel neporadím, s MySQL nepracuju. Ale bude to podle mě jen nějaká blbost, jakože ti třeba někde chyběj uvozovky (nebo jsou někde něco navíc) apod. Dotaz jako takový by měl být ok, to je čisté SQL které by mělo fungovat víceméně všude.
Ahoj, také přesně nerozumím zadání, ale povedlo se mi udělat toto...
UPDATE tabulka SET tabulka.t_id=0;
UPDATE tabulka SET tabulka.t_id=1-(SELECT COUNT(*) FROM tabulka AS `Foo` WHERE tabulka.Text = Foo.Text AND Foo.t_id=1 );
Nastaví to jedničku, pokud stejný řádek už nemá jedničku, jen si změň název tabulky, protože jsem nevěděl, jak se ta tvoje jmenuje
EDIT: Jedná se o dva dotazy odděleny středníky.
Zobrazeno 11 zpráv z 11.