• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SQL - ORDER BY wartość zmiennej

Object Storage Arubacloud
0 głosów
251 wizyt
pytanie zadane 2 stycznia 2020 w SQL, bazy danych przez Kolberg Obywatel (1,560 p.)
Napisałem kod, który daje "punkty" wynikom wyszukiwania sqla, które mają więcej wspólnych elementów z tymi przysłanymi postem. Ma to na celu poukładanie wyników wyszukania według tego jak często występują wspólne elementy tego co ktoś szuka i danych z wiersza sql.

Punkty zapisane są w talblicy punkty[$id] (php).

Czy istnieje możliwość poukładania (np. ORDER BY) według wartości zmiennych z tablicy punkty?

$id oczywiście odpowiada identyfikatorowi z tabeli sql

1 odpowiedź

0 głosów
odpowiedź 2 stycznia 2020 przez mbabane Szeryf (79,280 p.)

W order by wstawia się nazwę kolumny (z tabeli w bazie danych) według której chcesz posortować: 

SELECT * FROM table_name ORDER BY column_name ASC|DESC

 https://www.geeksforgeeks.org/sql-order-by/

Czyli w select w order by wstawiasz nazwę kolumny do której zapisuje się wartość z tablicy punkty[$id].

Zakładam jednak, że takie rzeczy to raczej wiesz, więc jeśli to nie jest odpowiedź na pytanie to, może sformułuj je jakoś inaczej lub podaj przykład jakie dane masz w tabeli, jakie ma kolumny i co ma być wynikiem.

komentarz 2 stycznia 2020 przez Kolberg Obywatel (1,560 p.)
Może podam przykład, bo nie o to mi chodziło:

Tabela o nazwie: gry_wideo

*ID | tematy

1 | zamek, wojna, śmierć

2 | zamek, wojna, rycerze

Ktoś w formularzu z podanych pól wybiera np. tematy: zamek, wojna, śmierć aby znaleźć gry w tej tematyce

Następnie w pętli przy każdej osobnej grze sprawdzam ile tematów, które ktoś wybrał zawiera ta gra i zapisuje je w tablicy, np: Gra o id 1 zawiera 3 wspólne tematy(zamek, wojna, śmierć), natomiast gra o id 2 zawiera 2 wspólne tematy(zamek, wojna)

Chcę, aby wyżej wyświetliły się gry, które mają więcej tematów wspólnych z tymi podanymi przez użytkownika. Problem w tym, że aby zrobić to w sql'u muszę jakoś wstawić sortowanie nie według kolumny, a tablicy. Szukam również ewentualnego innego rozwiązania na wypisanie tych rekordów w określonym porządku.
komentarz 3 stycznia 2020 przez mbabane Szeryf (79,280 p.)

Trzeba będzie chyba zrobić grupowanie z having:

select count(id) 'ilosc'
from gry_tematy
group by tematy having tematy like '%zamek%' or tematy like '%wojna%'

 

Mam jeszcze inny pomysł na to ale to później Ci wyjaśnię (chodzi o to, że można zrobić z pola tematy, osobną tabelę).

 

komentarz 4 stycznia 2020 przez Kolberg Obywatel (1,560 p.)

Grupowanie z having chyba tu nie zadziała frown. Dodanie "or tematy..." nie przynosi skutku. Jeżeli chodzi o pomysł z tabelą to też o tym myślałem, ale przy dużym ruchu na stronie było by to co najmniej nieprzyjazne dla serwera rozwiązanie. Chyba że da się zrobić coś jak "wirtualna tabela", albo chwilowa, bez konieczności ingerowania w rzeczywistą bazę danych.

komentarz 4 stycznia 2020 przez mbabane Szeryf (79,280 p.)
Druga tabela będzie na pewno wydajniejsza niż przeszukiwanie pola tekstowego.

Podobne pytania

0 głosów
1 odpowiedź 268 wizyt
0 głosów
1 odpowiedź 138 wizyt
pytanie zadane 26 kwietnia 2020 w SQL, bazy danych przez Farba Początkujący (440 p.)
0 głosów
1 odpowiedź 204 wizyt
pytanie zadane 19 sierpnia 2017 w SQL, bazy danych przez Melchior Obywatel (1,300 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...