![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 9.05.2015 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Postanowiłem założyć konto na Forum. Od kilku miesięcy korzystałem z jego pomocy, głównie przeszukując archiwalne tematy, jednak dzisiaj potrzebuję Waszej pomocy. Mam do wykonania takie zapytanie MYSQL: muszę sprawdzić czy podany rekord id_klienta o wartości dajmy na to 10 w tabeli KLIENCI został użyty w innych tabelach. Zapytanie miało by zwraca łączną liczbę wystąpień we wszystkich tabelach (np. w 6 podanych tabelach). Próbowałem za pomocą JOIN ale strasznie skomplikowane przy wielu tabelach. Czytałem też o HAVING, ale trochę tego nie ogarniam. Dodam też pracuję przy pomocy Codeigniter. Macie jakiś pomysł? (IMG:style_emoticons/default/wink.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 150 Pomógł: 31 Dołączył: 10.01.2007 Skąd: Bydgoszcz/Inowrocław Ostrzeżenie: (0%) ![]() ![]() |
on delete restrict lub no action spowoduje, że podczas próby usunięcia dostaniesz warning z bazy danych, że rekordu nie można usunąć, bo istnieją rekordy zależne - w innym przypadku - usuniesz. Constraints nie zadziała przy myisam (domyślnym silniku mysql), musisz ustawić na innodb.
Jeśli chcesz załatwić to jednym zapytaniem - da się - left join, np:
podstawiasz swoje dane, w wyniku dostajesz ID oraz ilosc jako sumę rekordów ze wszystkich tabel //edit: Jeszcze info o constraints - fajna opcja - cascade, w przypadku, gdy chcesz usunąć rekord, cascade pozwoli Ci usunąć wszystkie rekordy zależne, ale WAŻNE jest odpowiednie stowrzenie struktury tabel, niekiedy przydaje się set null - tam gdzie zamiast usunięcia rekordu powinna zostać wyrzucona dana o identyfikatorze elementu Ten post edytował salfunglandyare 12.05.2015, 20:49:24 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 05:11 |