![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam!
Napisałem poniższy kod, który tworzy fragment zapytania sql dodającego kilka wpisów do tabeli w jednym zapytaniu.
I teraz pojawił się problem. W tabeli drugie pole ma status UNIQUE. Kiedy jedna z wartości w tablicy $arr juz znajduje się w tabeli, to zapytanie wogóle się nie wykona i nie doda się żaden inny element, pomimo iż nie ma takiego w bazie. Czy muszę to rozbijać na pojedyńcze zapytania? Da się jakoś inaczej? Ten post edytował flashdev 17.01.2010, 01:07:13 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 15.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam! Napisałem poniższy kod, który tworzy fragment zapytania sql dodającego kilka wpisów do tabeli w jednym zapytaniu.
I teraz pojawił się problem. W tabeli drugie pole ma status UNIQUE. Kiedy jedna z wartości w tablicy $arr juz znajduje się w tabeli, to zapytanie wogóle się nie wykona i nie doda się żaden inny element, pomimo iż nie ma takiego w bazie. Czy muszę to rozbijać na pojedyńcze zapytania? Da się jakoś inaczej? a jakbys wykasował jednoznaczność indeksu, a sprawdzał po pętli czy są wpisy z duplikatem ? np. CODE $query1 = "ALTER IGNORE TABLE nazwa_tablicy ADD UNIQUE INDEX nazwa_kolumny"; $query2 = "ALTER TABLE nazwa_tablicy DROP INDEX nazwa_kolumny"; $result1 = mysql_query($query1, db) or die("Błąd: " . mysql_error()); $result2 = mysql_query($query2, db) or die("Błąd: " . mysql_error()); wtedy za każdym razem by sobie sprawdzał czy w tej kolumnie nie ma duplikatów, a pętla zapisze normalnie bo indeks jest dodawany i usuwany zaraz po petli.. Niewiem czy o to by ci chodziło.. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Nie do końca rozumiem o co chodzi.
Tymczasowo napisałem taki kod:
wejście: tablica zawierająca tagi do dodania wyjscie: tablica zawierająca id dodanego tagu, lub 0 jeśli nie został dodany No i to działa tak jak trzeba, tylko wydaje mi się, że da się to zrobić wykonujac tylko jedno zapytanie. Chyba o to chodzi w mysql, żeby wywoływać optymalne zapytania? Jeśli da się to poprawić to czekam na sugestie. Ten post edytował flashdev 17.01.2010, 13:19:42 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 15.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
aha, teraz mi troche bardziej rozjasniles zadanie... wiadomo, ze zapytanie nie wykona sie jesli w danej kolumnie(oznaczej unique index) jest już taka sama wartość. Na początku myślałem, że ogólnie chcesz się pozbyć duplikatów więc dlatego chciałem byś wykasował unique index z tej kolumny i poprzez kod go dodawał i usuwał wtedy duplikaty usunełyby sie..
Teraz widze, że użyłeś klasy i w sumie też szybki sposób... Niestety nie wiem czy dałoby się w jednym zapytaniu to zrobić, sam jest ciekaw.. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 20:00 |