Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][MySQL]MySQL Jak pobrać określone dane?
Marasek22
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.06.2012

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


Witam, mam pewien problem. Mam kolumny w tabeli [string][id_account], chcę pobrać dane wszystkich gdzie string równe Jan i string równe Nowak o takim samym numerze [id_account] i wynik chcę mieć zestawiony w jednym wierszu. Np:
Jan Nowak 2234
Jan Nowak 2891
Jan Nowak 093

Ten post edytował Marasek22 4.06.2012, 12:20:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Hmm nie widzę tu problemu:

  1. SELECT string,id_account FROM tabelka WHERE string LIKE 'Jan%' AND string LIKE '%Nowak'
  2.  
  3. -- lub jeśli znasz kolejność tych słów:
  4.  
  5. SELECT string,id_account FROM tabelka WHERE string LIKE '%Jan%Nowak%'


Nie jest to najwydajniejsze ale chyba o to Ci chodziło



--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Marasek22
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.06.2012

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


Nie o to chodzi. Każde słowo to osobny rekord. Jan to osobny rekord i Nowak to osobny rekord. Każde słowo ma swój id_account.

Przykładowo chce wybrać 'Jan Nowak to pospolity obywatel' Każde słowo to osobny string.
Jan id=20 id_acount=10
Nowak id=129 id_acount=10
towar id=200 id_acount=11
to id=1280 id_acount=10
nigdy id=1290 id_account=11
pospolity id=1300 id_acount=10
Nowak id=1310 id_acount=15
obywatel id=1315 id_acount=10

W rezultacie zapytania chcę otrzymać Jan Nowak to pospolity obywatel 10
Z czego najważniejszy jest rezultat czyli id_account.

Ten post edytował Marasek22 4.06.2012, 12:53:23
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


kumam smile.gif (chyba tongue.gif)

  1. SELECT GROUP_CONCAT(DISTINCT string SEPARATOR ' '), id_account FROM tabelka WHERE string LIKE '%Jan%' OR string LIKE '%Nowak%' GROUP BY id_account


?


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Marasek22
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.06.2012

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


Cytat(Sephirus @ 4.06.2012, 13:47:27 ) *
kumam smile.gif (chyba tongue.gif)

  1. SELECT GROUP_CONCAT(DISTINCT string SEPARATOR ' '), id_account FROM tabelka WHERE string LIKE '%Jan%' OR string LIKE '%Nowak%' GROUP BY id_account


?

MySQL zwrócił pusty wynik (zero rekordów). ( Wykonanie zapytania trwało 0.0011 sekund(y) ) ;/
Go to the top of the page
+Quote Post
Sephirus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


hmmm to powinno działać ... to proste zapytanie :/


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Marasek22
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.06.2012

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


Częściowo zapytanie działa już. Problem teraz tylko że szukam np Jan Nowak a zwróci Jan Nowak a w dalszych rekordach np samo Jan. Operator AND nic nie pomaga i zwraca zero rekordów.

Dla potomnych:
CODE
SELECT GROUP_CONCAT( DISTINCT `string`
SEPARATOR ' ' ) , `id_acount`
FROM `customers`
WHERE `string` LIKE 'jan'
OR `string` LIKE 'nowak'
GROUP BY `id_acount`
HAVING GROUP_CONCAT( DISTINCT `string`
SEPARATOR ' ' ) = 'jan nowak'


Ten post edytował Marasek22 4.06.2012, 14:42:28
Go to the top of the page
+Quote Post
Sephirus
post
Post #8





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Masz rację tak by to działało... zatem:

  1. SELECT GROUP_CONCAT( DISTINCT `string`
  2. SEPARATOR ' ' ) AS `strings` , `id_acount`
  3. FROM `customers`
  4. GROUP BY `id_acount`
  5. HAVING `strings` LIKE '%jan%'
  6. AND `strings` LIKE '%nowak%'


Można to ulepszyć jeszcze smile.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
Marasek22
post
Post #9





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 4.06.2012

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


Cytat(Sephirus @ 4.06.2012, 16:11:23 ) *
Masz rację tak by to działało... zatem:

  1. SELECT GROUP_CONCAT( DISTINCT `string`
  2. SEPARATOR ' ' ) AS `strings` , `id_acount`
  3. FROM `customers`
  4. GROUP BY `id_acount`
  5. HAVING `strings` LIKE '%jan%'
  6. AND `strings` LIKE '%nowak%'


Można to ulepszyć jeszcze smile.gif

Też działa, tylko wolniej. Moje zapytanie 0,5 sek, w twoim przypadku aż 5,5 sek, no i nie zwraca wszystkich rekordów więc coś nie teges chyba
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 Aktualny czas: 19.08.2025 - 17:14