dj.drezyna Napisano Czerwiec 15, 2010 Zgłoś Share Napisano Czerwiec 15, 2010 Mam taki o to kod jak poniżej i on nie działa prawidłowo, po prostu zapytanie wysłane przez php nie daje pożądanego rezultatu, czyli do tabeli nie dodaje się poniższy rekord. SELECT IF(((SELECT COUNT(aut) FROM oc WHERE aut='Mario') > 0),(INSERT INTO oc VALUES('Ufpwe2497', '35', 'Mario', '2000-06-15', '0')),'') Wiem, że można to obejść przez zapytanie takie jak w warunku i potem przyjąć jakąś tam flagę po czym przez zwykły if z php wykonać zapytanie dodania rekordu ale jak można to zrobić z samym tylko mysql? Zrobić to, czyli dodać dany rekord wtedy i tylko wtedy gdy pewne dane nie znajdują się w tej samej tabeli? Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Czerwiec 16, 2010 Zgłoś Share Napisano Czerwiec 16, 2010 A nie myślałeś może kiedyś o obiektowej obsłudze baz danych ? Link do komentarza Udostępnij na innych stronach More sharing options...
sazian Napisano Czerwiec 16, 2010 Zgłoś Share Napisano Czerwiec 16, 2010 Jason: co masz na myśli ?? dj.drezyna: jawnie chyba tego nie zrobisz zostaje ci tylko wyzwalacz jak będę miał wolną chwile to spróbuję coś napisać Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Czerwiec 16, 2010 Zgłoś Share Napisano Czerwiec 16, 2010 A no chodzi mi o korzystanie ze wzorca MVC np. w Javie EE, bez ręcznego pisania zapytań, zamiast kluczy obcych referencje itp. Coś jak w Google App Engine, można tam pisać w Javie i Pythonie. Aby zdefiniować tabelę tworzy się odpowiednią klasę z odpowiednimi polami dziedziczącą po klasie db.Model i za pomocą jej metod wstawia/wyciąga się rekordy. Link do komentarza Udostępnij na innych stronach More sharing options...
sazian Napisano Czerwiec 16, 2010 Zgłoś Share Napisano Czerwiec 16, 2010 wydaje mi się że w php będzie to mało wydajne edit rozwiązanie na które wpadłem jednak nie zadziała to zapytanie jest bardzo dziwne, jeżeli mam jakieś auto to mogę dodać kolejne a jeśli nie mam żadnego to nie mogę dodać nowego ale skąd wzięło się to pierwsze coś takiego triggerem raczej nie przejdzie Link do komentarza Udostępnij na innych stronach More sharing options...
dj.drezyna Napisano Czerwiec 16, 2010 Autor Zgłoś Share Napisano Czerwiec 16, 2010 Niczego nie trzeba komplikować. Po prostu chodzi mi o to żeby w razie kiedy w danej tabeli jest już jakaś dana w danym rekordzie np to że głos został oddany to już drugi raz nie dopisze się rekord z oceną. Taki przykład i tak też o to właśnie mi chodzi, żeby baza danych się tym zajęła i zrobić to w jednym zapytaniu a nie zapytać się jaki jest wynik (czy jest ten rekord) i dopiero potem drugi raz wykonywać bądź nie zapis nowej oceny. Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link do komentarza Udostępnij na innych stronach More sharing options...
Wosiedem Napisano Czerwiec 17, 2010 Zgłoś Share Napisano Czerwiec 17, 2010 Hint: W SQLu jest coś takiego jak 'exists'. Poszukaj "insert if not exists" Edit: Hmm... to chyba jest tylko w MSSQLu, ale myślę że w sieci są już rozwiązania które robią to samo (a wykorzystują czystego SQLa) Pozdrawiam, vo7 (; Link do komentarza Udostępnij na innych stronach More sharing options...
sazian Napisano Czerwiec 17, 2010 Zgłoś Share Napisano Czerwiec 17, 2010 no dobra teraz rozumiem mam "półśrodek" w niedziele spytam wykładowce jak to zrobić poprawnie CREATE TRIGGER tgINSERToc BEFORE INSERT ON da FOR EACH ROW BEGIN DECLARE num_rows int; SELECT COUNT(*) INTO num_rows FROM oc WHERE oc.aut=NEW.aut; IF num_rows > 0 THEN DELETE FROM NEW; END IF; END _7)-ĘknvZv]Z'kFę-ŚŁDZxgę-jWzJ+vx-jxvZ'{3zxxk'ŚJ+fĘuzJ+v0ĘZuuT4lŹW ALTER TABLE oc ADD CONSTRAINT un UNIQUE(aut) edit2: wygląda na to że nie da się tego prosto zrobić jeżeli potrzebujesz ograniczenie niż max 1 jedynie możesz pozostać przy obecnym rozwiązaniu(z triggerem i błędem o braku tabeli) lub jeżeli masz MySQL --version >= 5.5 da się tworzyć własne komunikaty błędów (nie pamiętam jak ale na google na pewno znajdziesz) Link do komentarza Udostępnij na innych stronach More sharing options...
dj.drezyna Napisano Czerwiec 20, 2010 Autor Zgłoś Share Napisano Czerwiec 20, 2010 Jeny, nie wiedziałem, że to takie skomplikowane. Poprzednio z użyciem *.csv po prostu sprawdzało się w php funkcją in_array i po sprawie a tu taki kłopot, myślę, że lepiej zastosuję te flagi co wspominałem kilka postów wcześniej nawet uważam, ze będzie wydajniejsze. Dziękuję bardzo wszystkim za podjęte próby wyjaśnienia. Może uda się jeszcze inaczej. Galeria przyrodnicza http://fotokrajobrazy.warmia.pl Link do komentarza Udostępnij na innych stronach More sharing options...
sazian Napisano Czerwiec 21, 2010 Zgłoś Share Napisano Czerwiec 21, 2010 jeśli uda się inaczej to poproszę o informację jak Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.