Onhan näitä threadeja jo aikasemminkin, joten oli pakko yksi itsekin omistaa. Eli muotoilin oman väännöksen myslihausta, joka on saatavilla tuolta: http://www.designplace.org/scripts.php?page=1
Tämä koodi hakee vain yhdestä sarakkeesta. Ajattelin, että teoriassa sen voisi vääntää hakemaan mistä tahansa, jos sille opettaisi kaikkien kenttien nimet arrayssa ja ajaisi haun esimerkiksi for-silmukan läpi niin, että kaikista on varmasti haettu. Mutta ongelma tuli eteen: silloinhan, jos kahdessa eri kentässä on samalla rivillä sama merkkijono, tuloksiin tuo rivi tulee kahteen kertaan. Sitä paitsi, kun taulu on vielä luonnosvaiheessa, niin sitä arrayta saisi sitten olla koko ajan säätämässä.
Eli jokin helpompi tapahan tälle varmastikin on. Se kyllä oli eilisessä televisiovisailussa, mutta nyt ei vain ihan tule päähän, että miten se taas olikaan - miten siis helposti ja oikein toteuttaisi haun, joka hakee koko taulusta, mutta listaa yhden rivin vain kerran?
merkki LIKE '%Vol%' or malli LIKE '%Vol%'
DISTINCT:llä voit vaatia että tulokset ovat uniikkeja, tuohon tapaan:
http://www.webdevelopersnotes.com/tutorials/sql/
Niko: Tämä siis tulee mihin..? Minulle pitää olla hyyyyvin selkeä.
JTS: Kätevää. Miten DISTINCT sitten liitetään tähän näin? Itse asiassa, kun tarkemmin ajattelen, seuraava ongelma tulee siinä, miten voin lisätä uuden for-silmukan tuloksen edellisen queryyn, jolloin niitä voi muokkailla ja järjestellä ym. vielä...
SELECT DISTINCT blah ...
Saako tämän kaiken siis yhteen mysli-queryyn?
select distinct * from taulu where name like \"%$trimmed%\" order by name
toimii vallan mainiosti. Mysli ei kuitenkaan ymmärrä, kun haluan, että
select distinct * from taulu where name like \"%$trimmed%\" or desc like \"%trimmed%\" order by name
tai että
select distinct * from taulu where name like \"%$trimmed%\" or where desc like \"%trimmed%\" order by name
tai jopa
select distinct * from taulu where name or desc like \"%$trimmed%\" order by name
eikä edes
select distinct * from taulu where * like \"%$trimmed%\" order by name
Miten siis saada niin, että voi hakea juuri tietyistä sarakkeista joita on enemmän kuin yksi mutta vähemmän kuin kaikki? Kiitos.
SysRq868 kirjoitti:
Mysli ei kuitenkaan ymmärrä, kun haluan, että
select distinct * from taulu where name like \"%$trimmed%\" or desc like \"%trimmed%\" order by name
Minulla ymmärtää :) (testikantana Amarokin artistirelaatiokanta):
mysql> select distinct * from related_artists where artist like '%aa%' or suggestion like '%aa%'; +--------------------------------------+-------------------------------------+------------+ | artist | suggestion | changedate | +--------------------------------------+-------------------------------------+------------+ | Kotiteollisuus | Eppu Normaali | 0 | | Kotiteollisuus | Maija Vilkkumaa | 0 | | Elvenking | Korpiklaani | 0 | | Moonsorrow | Korpiklaani | 0 | ... +--------------------------------------+-------------------------------------+------------+ 145 rows in set (0.02 sec)
select distinct * from taulu where name like \"%$trimmed%\" or desc like \"%trimmed%\" order by name
desc on mysql avain sana
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in \www\search.php on line 39
36 $query = "select distinct * from taulu where name like \"%$trimmed%\" or desc like \"%$trimmed%\" order by name"; 37 38 $numresults=mysql_query($query, $link); 39 $numrows=mysql_num_rows($numresults);
En älyä, mikä voi olla vikana - molemmat kentät ovat olemassa (varchareja molemmat), ja haku toimii, jos etsii vain namesta. Mutta jos laitan descin tuonne väliin, se rupeaa herjaamaan. :(
Debugia kehiin:
$numresults = mysql_query($query, $link) or die("Kysely $query aiheutti virheen ".mysql_error());
^^^ Tuossahan tuo jo sanottiin. "Desc"-sanaa ei saa käyttää, vaihdappa taulun sarakkeen nimeksi esim descr.
Ah. Kiitoksia. Pitääpä bookmarkata.
Aihe on jo aika vanha, joten et voi enää vastata siihen.