Portál AbcLinuxu, 29. července 2025 13:40


Dotaz: SELECT FROM t1,t2,t3

28.1.2007 16:29 dusan456 | skóre: 12 | Poprad
SELECT FROM t1,t2,t3
Přečteno: 133×
Odpovědět | Admin
Mám 3 tabuľky, kde v test1 sa nachádza id aktualizovaných objektov. V test2 sú pôvodné dáta, ktoré chcem aktualizovať na základe nových + zmenených dát z test3.
mysql> select * from test1;
+-------+
| id    |
+-------+
| 55555 |
| 88888 |
| 44444 |
+-------+

mysql> select * from test2;
+-------+---------+----------+
| id    | hodnota | language |
+-------+---------+----------+
| 11111 | 1old    | sk       |
| 22222 | 2old    | sk       |
| 33333 | 3old    | sk       |
| 66666 | 6old    | sk       |
| 77777 | 7old    | sk       |
| 88888 | 8old    | sk       |
| 99999 | 9old    | sk       |
| 55555 | 5old    | pl       |
| 55555 | 5old    | hu       |
+-------+---------+----------+

mysql> select * from test3;
+-------+---------+----------+
| id    | hodnota | language |
+-------+---------+----------+
| 55555 | 5new-pl | pl       |
| 55555 | 55555sk | sk       |
| 55555 | 55555en | en       |
| 44444 | 4newsk  | sk       |
| 88888 | 8newsk  | sk       |
+-------+---------+----------+
"id a language" je PRIMARY KEY

Zmenené data aktualizujem s
UPDATE test1,test2,test3 SET test2.hodnota = test3.hodnota 
WHERE test1.id = test2.id AND  test1.id = test3.id AND 
test2.language = test3.language
Nedari sa mi však s pridaním nových dát. Skúšal som tento SELECT, ale vracia mi všetky údaje.
SELECT DISTINCT test3.id, test3.hodnota, test3.language
FROM test3, test2, test1
WHERE test1.id = test3.id
AND (
test3.id <> test2.id
OR test3.language <> test2.language
)
Potrebujem, aby mi dotaz vrátil tieto údaje
| 55555 | 55555sk | sk       |
| 55555 | 55555en | en       |
| 44444 | 4newsk  | sk       |
Ďakujem za pomoc
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

29.1.2007 14:02 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: SELECT FROM t1,t2,t3
Odpovědět | | Sbalit | Link | Blokovat | Admin

Standardní trik:

  insert into TEST2(ID,LANGUAGE,HODNOTA)
    select N.ID,N.LANGUAGE,N.HODNOTA
      from TEST3 N left join TEST2 O on O.ID=N.ID and O.LANGUAGE=N.LANGUAGE
      where O.ID is null

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.