Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Aktualizacja wiele rekordów danymi z innej tabeli + DUPLICATE KEY ?
WashingtonPLx
post 27.03.2019, 00:15:03
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 24.05.2011

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


Czy da się zrobić coś takiego, aby aktualizowało/ lub tworzyło nowy rekord w tabeli na podstawie danych z innej tabeli? udało mi się jedynie zrobić aktualizacje, ale czasami bywa tak że rekord nie istnieje i trzeba go utworzyć i jak ja mam zrobić ?


  1. $UP = 'UPDATE #__forum_users_posts_in AS t
  2. JOIN (
  3. SELECT
  4. userid, count(*) AS sum_total
  5. FROM
  6. #__forum_messages AS t2
  7. WHERE
  8. T2.thread = '.$topicId.' and hold = 0
  9. GROUP BY
  10. t2.userid
  11. ) AS t2 ON t.userid = t2.userid and (idcat = '.$cat->id.' or idcustom = '.$selectcustom1.')
  12. SET t.posts = t.posts + t2.sum_total';

Podsumowując chodzi mi o to by przerobić powyższy kod tak aby tworzył nowy rekord jeśli nie ma takiego który mogłyby zaktualizować
Próbowałem zastosować mniej więcej coś takiego z ON DUPLICATE KEY UPDATE. Tylko, że aktualizuje rekordy gdzie zgadza się ID, a musi porównywać userid|idcat|idcustom.

  1. INSERT INTO `table` (`columns`) VALUES
  2. (...)
  3. ON DUPLICATE KEY UPDATE
  4. `column` = VALUES (`column`);


Ten post edytował WashingtonPLx 27.03.2019, 00:15:58
Go to the top of the page
+Quote Post
Pyton_000
post 27.03.2019, 08:44:33
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Musiałbyś założyć index qunique na te 3 pola jesnocześnie jeśli taka trójka ma być sprawdzana i wtedy zadziała Ci on duplicate.

To co możesz zrobić to zrobić dodatkowe zapytanie insert które weźmie dane z selecta które nie istnieją w bazie i przypisze im 0 jako wartość
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 09:05