ďťż
 
[mysql] zapytanie uaktualnienie id tabeli ďťż
 
[mysql] zapytanie uaktualnienie id tabeli
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[mysql] zapytanie uaktualnienie id tabeli



maLy - 25-01-2006 12:10
[mysql] zapytanie uaktualnienie id tabeli
  Mam tabele:
nazwy:
-id
-nazwa

sprzedaz:
-id
-model (nazwy.id)

nazwy2:
-id
-nazwa

sprzedaz2:
-id
-model (nazwy2.id)

W rzeczywistosci baz: nazwy i sprzedaz jest wiecej. Chce teraz wszystkie
polaczyc w dwie:
wszystkie_nazwy:
-id
-nazwa
-wlasciciel

wszystkie_sprzedaz:
-id
-model (wszystkie_sprzedaz.id)
-wlasciciel

Jakie dac zapytanie, zeby (po przekopiowaniu tabel: nazwa i sprzedaz do
wszystkie_nazwa, wszystkie_sprzedaz) po zmianie nazwa.id na
wszystkie_nazwa.id zaktualizowac wszystkie_sprzedaz.model wg nowego id.
Probowalem jak ponizej, ale 0 wynikow:
UPDATE nazwy, wszystkie_nazwy, wszystkie_sprzedaz SET
wszystkie_sprzedaz.model = wszystkie_nazwy.id
WHERE
nazwy.nazwa = wszystkie_nazwy.nazwa AND
wszystkie_sprzedaz.model = nazwy.id AND
wszystkie_sprzedaz.wlasciciel = 1

POMOCY!
--
maLy
http://kalamazoo.pl





trojacek.NOSPAM@wp.pl - 25-01-2006 12:10

  On Tue, 24 Jan 2006 14:29:30 +0100, maLy <malyem@o2.pl> wrote:

>Probowalem jak ponizej, ale 0 wynikow:
>UPDATE nazwy, wszystkie_nazwy, wszystkie_sprzedaz SET
>wszystkie_sprzedaz.model = wszystkie_nazwy.id
>WHERE
>nazwy.nazwa = wszystkie_nazwy.nazwa AND
>wszystkie_sprzedaz.model = nazwy.id AND
>wszystkie_sprzedaz.wlasciciel = 1

UPDATE??? Chyba INSERT? Chyba, że w tabelach wszystkie_nazwy i
wszystkie_sprzedaz masz już coś wpisane...
UPDATE nie wstawia żadnych rekordów.

Spróbuj składni INSERT .... VALUES() ... SELECT ...

--
Jacek Trojański, trojacek(at)wp(dot)pl




maLy - 25-01-2006 12:10

  trojacek.NOSPAM@wp.pl napisał(a):

> UPDATE??? Chyba INSERT? Chyba, że w tabelach wszystkie_nazwy i
> wszystkie_sprzedaz masz już coś wpisane...
Chce zrobic to na raty, czyli po kolei dodawac nowa tabele (to
potrafie), ale nie moge poradzic sobie ze zmiana id.

--
maLy
http://kalamazoo.pl




trojacek.NOSPAM@wp.pl - 25-01-2006 12:10

  On Tue, 24 Jan 2006 15:41:56 +0100, maLy <malyem@o2.pl> wrote:

>trojacek.NOSPAM@wp.pl napisał(a):
>
>> UPDATE??? Chyba INSERT? Chyba, że w tabelach wszystkie_nazwy i
>> wszystkie_sprzedaz masz już coś wpisane...
>Chce zrobic to na raty, czyli po kolei dodawac nowa tabele (to
>potrafie), ale nie moge poradzic sobie ze zmiana id.

To opisz, JAK dodajesz tę tabelę, a raczej jak wypełniasz ją danymi.
Ktoś Ci na pewno pomoże :)

--
Jacek Trojański, trojacek(at)wp(dot)pl





maLy - 25-01-2006 12:10

  trojacek.NOSPAM@wp.pl napisał(a):

> To opisz, JAK dodajesz tę tabelę, a raczej jak wypełniasz ją danymi.
> Ktoś Ci na pewno pomoże :)
wczesniej:
nazwy:
-id
-nazwa
1 aaa
2 bbb
3 ccc

sprzedaz:
-id
-model (nazwy.id)
1 1
2 3
3 3
4 2

nazwy2 (ta sama struktura co nazwa):
1 bbb
2 xxx
3 zzz

sprzedaz2(jw):
1 2
2 3
3 1

....itd

teraz otrzymalem po kopiowaniu:
wszystkie_nazwy:
-id
-nazwa
-wlasciciel (dla uproszczenia jesli nazwy2 to 2, nazwy3 to 3 itd...)

1 aaa 1
2 bbb 1
3 ccc 1
4 bbb 2
5 xxx 2
6 zzz 2

wszystkie_sprzedaz:
-id
-model (wszystkie_nazwy.id)
-wlasciciel (jw)

1 1 1
2 3 1
3 3 1
4 2 1
5 2 2
6 3 2
7 1 2

Ta tabela jest do poprawy, w przedstawiony wyzej sposob, to jest to co
otrzymuje przez kopiowanie starych tabel do jednej wspolnej. Jak teraz
przywrocic poprawnosc tabeli zebym otrzymal:
1 1 1
2 3 1
3 3 1
4 2 1
5 5 2
6 5 2
7 4 2

Wtedy moglbym zrezygnowac z pola wszystkie_nazwy.wlasciciel.

--
maLy
http://kalamazoo.pl




trojacek.NOSPAM@wp.pl - 25-01-2006 12:10

  On Tue, 24 Jan 2006 16:39:13 +0100, maLy <malyem@o2.pl> wrote:

>Ta tabela jest do poprawy, w przedstawiony wyzej sposob, to jest to co
>otrzymuje przez kopiowanie starych tabel do jednej wspolnej. Jak teraz
>przywrocic poprawnosc tabeli zebym otrzymal:
>1 1 1
>2 3 1
>3 3 1
>4 2 1
>5 5 2
>6 5 2
>7 4 2

W takim razie Twoje query:

>UPDATE nazwy, wszystkie_nazwy, wszystkie_sprzedaz SET
>wszystkie_sprzedaz.model = wszystkie_nazwy.id
>WHERE
>nazwy.nazwa = wszystkie_nazwy.nazwa AND
>wszystkie_sprzedaz.model = nazwy.id AND
>wszystkie_sprzedaz.wlasciciel = 1

jest lekko kolizyjne, bo zarówno zapisujesz, jak i sprawdzasz kolumnę
wszystkie_sprzedaz.model, nie wiesz więc, kiedy jest tam stara
wartość(model), a kiedy nowa (id).
Najlepiej stwórz tymczasową tabelę i do niej INSERTuj, potem ją możesz
przenieść/przemianować.

--
Jacek Trojański, trojacek(at)wp(dot)pl




maLy - 25-01-2006 13:32

  trojacek.NOSPAM@wp.pl napisał(a):
> Najlepiej stwórz tymczasową tabelę i do niej INSERTuj, potem ją możesz
> przenieść/przemianować.
dalem tak:
UPDATE nazwy, wszystkie_nazwy, wszystkie_sprzedaz,
wszystkie_sprzedaz_temp SET
wszystkie_sprzedaz.model = wszystkie_nazwy.id
WHERE
nazwy.nazwa = wszystkie_nazwy.nazwa AND
wszystkie_sprzedaz_temp.model = nazwy.id AND
wszystkie_sprzedaz.wlasciciel = 1 AND
wszystkie_sprzedaz.id=wszystkie_sprzedaz_temp.id

i dalej zero :(
Dzieki za pomoc.
--
maLy
http://kalamazoo.pl




Kasia Balicka - 27-01-2006 10:46

  > trojacek.NOSPAM@wp.pl napisał(a):
> > Najlepiej stwórz tymczasową tabelę i do niej INSERTuj,
> potem ją możesz
> > przenieść/przemianować.
> dalem tak:
> UPDATE nazwy, wszystkie_nazwy, wszystkie_sprzedaz,
> wszystkie_sprzedaz_temp SET
> wszystkie_sprzedaz.model = wszystkie_nazwy.id
> WHERE
> nazwy.nazwa = wszystkie_nazwy.nazwa AND
> wszystkie_sprzedaz_temp.model = nazwy.id AND
> wszystkie_sprzedaz.wlasciciel = 1 AND
> wszystkie_sprzedaz.id=wszystkie_sprzedaz_temp.id
>
> i dalej zero :(
> Dzieki za pomoc.
> --
> maLy
> http://kalamazoo.pl

przyjrzalam sie temu co robiles i wydaje mi sie ze chodzi ci o zachowanie
relacji w polaczonej tabeli pomimo tego iz w tabelach rozdzielnych
powtarzaja sie id..
Ja obeszłabym to trikiem jezeli nie musi to byc operacja powtarzalna.
zakladam ze id numerowane jest od 1.
nalezy w jednej z tabel nazwa sprawdzic jakie jest max(id) i nastepnie w
drugiem importowanej tabeli dodawac te wartosc do kazdego id to samo zrobic
w drugiej tabeli sprzedazy.
Mozna by to juz wykonac przy poleceniu insert
w ten sposob pierwszy insert robisz normalnie

insert wszystkie_nazwy(id, nazwa)
select (id, nazwa) from nazwy

insert wszystkie_sprzedaz ( id, model)
select (id, model) from sprzedaz

-- a kolejna tabele insertujesz
insert wszystkie_nazwy(id, nazwa)
select id + (tu max(id) from nazwy) from nazwy2

insert wszystkie_sprzedaz(id,model)
select id, model +(tu max(id) from nazwy) from sprzedaz2

--oczywiscie sprawa ma sie tak samo z id sprzedazy gdyby mialo byc
niepowtarzalne i zahcowac jakies relacje...
Kasia

--
Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [MySQL] Czy da =?ISO-8859-2?Q?si=EA_wykonac_takie_powi=B1z?==?ISO-8859-2?Q?anie_mi=EAdzy_tabelami=2C_i_jak_to_odpyta=E6_? ==?ISO-8859-2?Q?=3F?= Import za =?ISO-8859-2?Q?pomoc=B1_EMS_Data_Import_for_?==?ISO-8859-2?Q?MySQL_-_polskie_litery=2E?= oracle -> oracle lub oracle -> mysql replikacja - programy
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ptsite.xlx.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com