Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: duplikowanie rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
maciu
mam takie zapytanie
  1. SELECT id
  2. FROM cms_plaintext WHERE ( hid='nazwisko' OR hid='tytul') AND text LIKE "%'.addslashes($_GET['q']).'%"
  3. ORDER BY text ASC


Problem polega na tym, że jeśli szukana fraza $_GET['q'] jest jednoczesnie nazwiskiem i tytulem ( cms_plaintext.hid='nazwisko' i cms_plaintext.hid='tytul' są TRUE) to wyniki wyświetlają się podwójnie.
Nie wiem jak zrobić, aby jeśli fraza znajduje się w nazwisku i tytule to, żeby była wyświetlana tylko raz

Próbowałem użyć DISTINCT, ale to też nic nie daje

Macie jakieś pomysły jak to rozwiązać
nospor
przy takim zapytaniu distinct nie ma prawa nie dzialac:
  1. SELECT DISTINCT id
  2. FROM cms_plaintext WHERE ( hid='nazwisko' OR hid='tytul') AND text LIKE "%'.addslashes($_GET['q']).'%"
  3. ORDER BY text ASC

a podwojne rekordy są bo nazwisko lub tytul w róznych rekordach są. gdyby byly w tym samym to by raz pokazalo
maciu
niestety distinct nic nie daje. Gdy jest takie zapytanie:
  1. SELECT id
  2. FROM cms_plaintext WHERE hid='nazwisko' AND text LIKE "%'.addslashes($_GET['q']).'%"
  3. ORDER BY text ASC

to wynik wyświetli się raz, co jest dowodem na to, że ten błąd jest w zapytaniu a nie w innym miejscu kodu

Próbowałem też zostosować 'group by text', ale to też nic nie dało
nospor
No faktycznie. MOja wina. PRzeciwż id dla różnych rekotrdów jest rózne.
A tobie chodzi zeby wyswietlic tylko jeden rekord? Jak tak to daj na koncu "limit 1".
Za bradzo nie wyobrazam se tej twojej tabeli. A może daj distinct po polu text?
maciu
struktura tabeli wygląda tak

id text hid
---------------
1 maciek nazwisko
2 maciek tytul
3 maciek8 tytul

i chcę aby po szukaniu frazy "maciek" wyświetliły się 2 rekordy: 1 lub 2 (wszystko jedno który) oraz rekord 3, dlatego nie mogę użyć LIMIT 1

Jak używam distinct(text) to wywala błąd składniowy (czyżby chodziło o wersji mysql?)
nospor
  1. SELECT id, text
  2. FROM cms_plaintext WHERE ( hid='nazwisko' OR hid='tytul') AND text LIKE '%maciek%'
  3. GROUP BY text
  4. ORDER BY text ASC
testowalem u siebie i dziala smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.