Problem amatora :)
Marek - 02-04-2007 00:03
Problem amatora :)
Witam,
mam w bazie tabele w ktorej rekordy maja 10 pol, jak usunac z tabeli wszystkie rekordy ktore maja 9 i wiecej pol pustych>
z gory dzieki
pozdrawiam
Marek
Marek - 02-04-2007 00:03
zapomnailem napisac ze w SQLu...
=?ISO-8859-2?Q?S=B3awomir_Szysz=B3o?= - 02-04-2007 00:03
Dnia Sun, 01 Apr 2007 10:24:12 +0200, Marek <fun_site@poczta.USUN.TO.onet.pl> wklepał(-a):
>Witam, > >mam w bazie tabele w ktorej rekordy maja 10 pol, jak usunac z tabeli >wszystkie rekordy ktore maja 9 i wiecej pol pustych>
W poleceniu DELETE musisz wymienić nazwę pola:
DELETE from tab WHERE a is null and b is null and ....
Jeśli nie wiesz, gdzie mogą się zdarzyć puste pola, to musisz sobie wygenerować wszystkie możliwe kombinacje takich DELETE-ów. Co oznacza, że masz jakąś dziwną strukturę tabeli, skoro kryterium usuwania jest jedynie brak wartości w 9/10 pól. :) -- Sławomir Szyszło mailto:slaszysz@poczta.onet.pl Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/ Archiwum http://groups.google.com/groups?grou...mp.bazy-danych
sg - 02-04-2007 00:03
Sławomir Szyszło wrote: > Dnia Sun, 01 Apr 2007 10:24:12 +0200, Marek <fun_site@poczta.USUN.TO.onet.pl> > wklepał(-a): > >> Witam, >> >> mam w bazie tabele w ktorej rekordy maja 10 pol, jak usunac z tabeli >> wszystkie rekordy ktore maja 9 i wiecej pol pustych> > > W poleceniu DELETE musisz wymienić nazwę pola: > > DELETE from tab > WHERE a is null and b is null and .... > > Jeśli nie wiesz, gdzie mogą się zdarzyć puste pola, to musisz sobie wygenerować > wszystkie możliwe kombinacje takich DELETE-ów. Co oznacza, że masz jakąś dziwną > strukturę tabeli, skoro kryterium usuwania jest jedynie brak wartości w 9/10 > pól. :)
to zależy... jeśli bazą jest np. postgres to się da łatwiej
Andrzej Dabrowski - 03-04-2007 00:07
Uzytkownik "Marek" <fun_site@poczta.USUN.TO.onet.pl> napisal w wiadomosci news:eunq6v$aol$1@news.onet.pl... > Witam, > > mam w bazie tabele w ktorej rekordy maja 10 pol, jak usunac z tabeli > wszystkie rekordy ktore maja 9 i wiecej pol pustych> > Jesli masz identyfikator to ja bym to zrobil przez tabele tymczasowa, policzyl nulle (programem) i stworzyl tabele z dwóch kolumn - identyfikator i liczba nulli. Potem delete warunkowany selectem po drugiej tabeli:
delete from TAB_GLOWNA where IDENTYFIKATOR in (select IDENTYFIKATOR from TAB_POMOCNICZA where LICZBA_NULLI>=9 )
Samo policzenie nulli w programie jest dosc proste (petla po krotkach (wierszach) w niej petla po polach danej krotki z licznikiem zwiekszanym przez IFNULL=true), byc moze zakreconym sqlem tez sie do to zrobic,albo kombinacja procedur wbudowanych, ale tak bedzie chyba najszybciej Andrzej Dabrowski
Robert Osowiecki - 03-04-2007 00:07
Andrzej Dabrowski napisał(a): > Samo policzenie nulli w programie jest dosc proste (petla po krotkach > (wierszach) w niej petla po polach danej krotki z licznikiem zwiekszanym > przez IFNULL=true), byc moze zakreconym sqlem tez sie do to zrobic,albo > kombinacja procedur wbudowanych, ale tak bedzie chyba najszybciej
Da sie zakręcić takiego SQL-a: DELETE FROM tabela WHERE CASE WHEN pole1 IS NULL then 1 else 0 END + CASE WHEN pole2 is NULL then 1 else 0 END + (...) CASE WHEN pole10 IS NULL then 1 else 0 END >=9
Ale fakt: trochę dziwne masz te dane, pewnie struktura nie za dobrze pomyślana.
R.
Andrzej Dąbrowski - 03-04-2007 00:07
Użytkownik "Robert Osowiecki" <robson@rassun.art.pl> napisał w wiadomości news:euqprf$4h1$1@opal.futuro.pl... > Andrzej Dabrowski napisał(a): >> Samo policzenie nulli w programie jest dosc proste (petla po krotkach >> (wierszach) w niej petla po polach danej krotki z licznikiem zwiekszanym >> przez IFNULL=true), byc moze zakreconym sqlem tez sie do to zrobic,albo >> kombinacja procedur wbudowanych, ale tak bedzie chyba najszybciej > > Da sie zakręcić takiego SQL-a: > DELETE FROM tabela WHERE > CASE WHEN pole1 IS NULL then 1 else 0 END + > CASE WHEN pole2 is NULL then 1 else 0 END + (...) > CASE WHEN pole10 IS NULL then 1 else 0 END >=9 > > Ale fakt: trochę dziwne masz te dane, pewnie struktura nie za dobrze > pomyślana.
No właśnie da się sql-e, zrobić, ale trzeba uważać bo czasem taki skomplikowany SQL na sporej bazie wykonuje się baaardzo długo i jeśli ma być to jednorazówka to szybciej wklepać te 10 linii kodu :0 Andrzej Dąbrowski
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.plshutter.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|