питанка за една sql заявка

  • Автор Автор jack
  • Начална дата Начална дата

jack

Registered
Здравейте.Имам една таблицав която имам име и фамилия и бих искал да направя търсене по фамилия, но от типа WHERE family='antonov' OR family='ivanov' OR ... и т.н., заявката я вземама от форма с family[] нейм; та интересува ме ако е да речем със 100-150 възможности не става ли доста тромаво и има ли друг начин за реализация примерно да не се изброяват така а в самото mysql query да имам променлива family='$familyzaivka' примерно където в $familyzaiavka съм описал всички елементи; както и другият ми въпрос- прав ли съм да твърдя че при търсене по множество критерии в началото на заявката трябва да се поставят тези със еднозначни съвпадения, а след тях тях тези позволяващи вариции? пример WHERE column1='12' AND column2<='4' а не първо column2<='4' защото какъв би бил смисъла да се обходи цялата база аднни от 50 000 записа примерно, ако единсвено на едно място в колона едно има запис равен на 12.
Предварително благодаря, ако някой би ме просветлил, отностно някои особености по тъсенията по много параметри в базата данни.
 
ghostbg каза:
това с търсенето да го направиш с обикновенна търсачка в БД
ами и на ем нтова ми е идеята- посоченият пример и от qyery синтаксиса, какво имаш предвид "обикновенна търсачка в БД"?
 
ghostbg каза:
например тази http://web-tourist.net/login/login/view.php?st=967
хех.. това тук изпращаш само един параметър за търсене- аз точно това питам как да се реализира максимално оптимизирано да търси по много на брой думи в дадена колона на таблицата
 
по първия ти въпрос може да стане така
WHERE colona IN ( ivanov , petrov , kostov , stoqnov)
като масива може да го реализираш на ПХП с функцията implode
а това за бързината на търсене мисля че няма никакво значение кое на кое място е но несъм сигорен
 
mute каза:
по първия ти въпрос понеже втория него разбрах
може да стане така
WHERE colona IN ( ivanov , petrov , kostov , stoqnov)
да точно това имах предвид, а горният ред само да те попитам логическо "и" или "или" се приема- на мен ми трябват всички записи които имат съвпадение по някой от останалите без значение кой, а не всички, а и още нещо като си получа данните те са в масив familia[] бих ли могъл да го ползвам и да направя нещо като WHERE colona IN ( $familia[]) ? ;
по повод вторият ми въпрос той е по-скоро фундаментален а за да го разбереш давам още по брутален пример как е по парвилно WHERE column1<12 AND id='2' или май е по-добре да сложим проверката по айди първа защото сме сигурно че то е уникално... та разбра ме навярно вече.. въпроса ми беше по принцип за полета които нямаме представа дали са уникални
 
опитай с нещо такова
Код:
<?php
$select = $_POST["base"];
//echo $select;
//echo $text;
$host="";
$user="";
$password="";
$db="";

$connect=mysql_connect($host,$user,$password);
if (!$connect) { echo("ERROR: " . mysql_error() . "\n"); }

mysql_select_db($db) or die ("no select DB");
$query="SELECT * FROM urls LIKE'%search%' ";
//echo $query;
//exit;
if (!$query) {echo("ERROR:". mysql_error()."\n");}
$result=mysql_query($query);
echo $result;


в сяла се използва LIKE"%search%" ";
 
това е ИЛИ
където фамилията отгоравя на един от търсените думи
 

Back
Горе