Въпрос за търсачка между две бази данни

RREBORN

Registered
CREATE TABLE `user` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL ,
`name`varchar(255) NOT NULL,
........................
.....
PRIMARY KEY (`id`)
);


и втората таблица е

CREATE TABLE `firend` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`id_from`INT(10) NOT NULL ,
`id_to` int(10) NOT NULL,
........................
.....
PRIMARY KEY (`id`)
);

Използвам следния код

$sql2 = $_db_->_sql_query("SELECT * FROM `friend`, users WHERE `friend`.id_from=".$_auth_->id." AND `users`.id=".$_auth_->id." AND `friend`.friend='1' AND `friend`.ban='0' AND users.username LIKE '%$search_result%' OR users.name LIKE '%$search_result%' order by ".$orderby." LIMIT ".$_pageswitch_->limitkey."");


но нищо не се получава как ще стане така е като задам търсене по име например да ми извежда резултатите само за това име ?
 
Явно някаде не излиза. Пробвай да смалиш критериите до минимум, без променливи, без нищо просто в phpmyadmin-а си тествай заявката, като тя трябва да е максимално опростена и постепено добавяй по един критерий като гледаш какво ти връща и накрая си го слагаш в php файла и заместваш с променливи :) :?:
 
Първо не използвай този синтактис за свързване на таблици. Второ - ползвай алиаси при свръзката - много са удобни и предоставят възможности, които са недостъпни без тях.

За заявката - предполагам, че сте се водили от някакъв фрагмент, който променяте, понеже има микс от правила. На първо място искаш `users`.id=".$_auth_->id." - това предразполага точно един определен запис, който (явно) е на потребителя, който иска да търси данни, но в същото време имаш AND users.username LIKE... което обесмисля всичко - ще има резултат само тогава, когато се въведе името на тоя, който търси (т.е. безсмислена заявка).
 
lamerko каза:
Първо не използвай този синтактис за свързване на таблици. Второ - ползвай алиаси при свръзката - много са удобни и предоставят възможности, които са недостъпни без тях.

За заявката - предполагам, че сте се водили от някакъв фрагмент, който променяте, понеже има микс от правила. На първо място искаш `users`.id=".$_auth_->id." - това предразполага точно един определен запис, който (явно) е на потребителя, който иска да търси данни, но в същото време имаш AND users.username LIKE... което обесмисля всичко - ще има резултат само тогава, когато се въведе името на тоя, който търси (т.е. безсмислена заявка).


Всъщност наистина се получава точно така lamerko може ли да ми дадеш
някаква идея как да го оправя?
 
Принципно би трябвало да е нещо от този род, но не съм много сигурен във връзките ти. Приемам, че friend.id_from е връзка към user.id:

[sql]SELECT * FROM `users` u
JOIN `friend` f ON (f.id_from = u.id AND f.friend = 1 AND f.ban = 0)
WHERE u.username LIKE '%$search_result%' OR u.name LIKE '%$search_result%'
LIMIT ".$_pageswitch_->limitkey."[/sql]
 
lamerko каза:
Принципно би трябвало да е нещо от този род, но не съм много сигурен във връзките ти. Приемам, че friend.id_from е връзка към user.id:

[sql]SELECT * FROM `users` u
JOIN `friend` f ON (f.id_from = u.id AND f.friend = 1 AND f.ban = 0)
WHERE u.username LIKE '%$search_result%' OR u.name LIKE '%$search_result%'
LIMIT ".$_pageswitch_->limitkey."[/sql]


Уф пак нищо не стана, когато напиша едно име ми излиза то но ако напиша друго ми изкарва всички които са приятели на този ник.
 

Back
Горе