Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Porównywanie całych rekordów
radziel
post
Post #1





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 25.04.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Witam,
mam następujący problem:

Czy w MySQL 4.1 istnieje jakiś mechanizm który porównał by mi wartości pól z dwóch rekordów tej samej tabeli i zwrócił jedynie te które się nie pokrywają? Google nic sensownego nie zwróciło dla "mysql compare records" więc postanowiłem Was zapytać.

Np. dla danych:
Kod
id | name   | city    | country | code |
2  | Donald | Olsztyn | Poland  | 3546 |
6  | Marek  | Olsztyn | Poland  | 6566 |


Chcę uzyskać:
Kod
id | name   | city    | country | code |
6  | Marek  | null    | null    | 6566 |

lub coś o podobnej strukturze.

Bez problemu mógłbym to osiągnąć używając do porównania PHP, ale chciałbym się dowiedzieć czy istnieje rozwiązanie umożliwiające przerzucenie tej pracy na silnik bazy.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Harmider
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 2
Dołączył: 1.02.2007

Ostrzeżenie: (0%)
-----


Wydaje mi się, że i owszem można,
Nie chce mi się tego sprawdzać, ale gdyby mi się kiedyś zachciało postąpił bym tak (zakładając, że znam id obu porównywanych wierszy)

  1. SELECT `row2`.`id`,
  2. IF(`row1`.`name` != `row2`.`name`, `row2`.`name`, NULL) AS `name`,
  3. IF(`row1`.`city` != `row2`.`city`, `row2`.`city`, NULL) AS `city`,
  4. IF(`row1`.`country` != `row2`.`country`, `row2`.`country`, NULL) AS `country`
  5. IF(`row1`.`code` != `row2`.`code`, `row2`.`code`, NULL) AS `code`
  6. FROM `tablica` AS `row1`
  7. LEFT JOIN `tablica` AS `row2` ON `row2`.`id` = 6
  8. WHERE `row1`.`id` = 2;


Mam wątpliwości czy baza nie zwróci błędu przez to, że zrobiłem JOIN na tej samej tablicy, nie pamiętam czy tak wolno postępować (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif)
Proszę daj znać, czy to działa.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 10:18