/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
problemer med mange tabbeller
Fra : Tobber


Dato : 10-02-05 23:17

Jeg har et problem med en forespørgsel med flere tabeller. Jeg har ikke
adgang til inniDB-tabbeller eller noget lignende. I et søgefelt skal jeg
haved hits der kun omfatter rækker der opfylder at:
user_ID = 234 (ex)
og

$query = "SELECT *
FROM
ab_user_gruppe,
ab_mappe_gruppe,
ab_pictures
WHERE
ab_pictures.mappe_ID = ab_mappe_gruppe.mappe_ID
AND
ab_mappe_gruppe.gruppe_ID = ab_user_gruppe.gruppe_ID
AND
ab_user_gruppe.user_ID = '".$u['user_ID']."'
AND
ab_pictures.title LIKE '%".$_REQUEST['soegetxt']."%'
OR
ab_pictures.description LIKE '%".$_REQUEST['soegetxt']."%'
ORDER BY changed";

det går helt skævt. Hvordan styrer jeg AND/OR og skal jeg joine eller
union - jeg ...

mvh



 
 
Peter Brodersen (11-02-2005)
Kommentar
Fra : Peter Brodersen


Dato : 11-02-05 00:03

On Thu, 10 Feb 2005 23:16:58 +0100, "Tobber" <torben@ringsoe.dk>
wrote:

> $query = "SELECT *
> FROM
> ab_user_gruppe,
> ab_mappe_gruppe,
> ab_pictures
> WHERE
> ab_pictures.mappe_ID = ab_mappe_gruppe.mappe_ID
> AND
> ab_mappe_gruppe.gruppe_ID = ab_user_gruppe.gruppe_ID
> AND
> ab_user_gruppe.user_ID = '".$u['user_ID']."'
> AND
> ab_pictures.title LIKE '%".$_REQUEST['soegetxt']."%'
> OR
> ab_pictures.description LIKE '%".$_REQUEST['soegetxt']."%'
> ORDER BY changed";
>
>det går helt skævt. Hvordan styrer jeg AND/OR og skal jeg joine eller
>union - jeg ...

"Problemet" er, at AND er stærkere end OR. Så enten skal alle dine
første joins passe, eller også er det bare ab_pictures.description,
der skal passe ind. Og så mister du hele join'en.

Prøv fx med:

$query = "SELECT *
FROM
ab_user_gruppe,
ab_mappe_gruppe,
ab_pictures
WHERE
ab_pictures.mappe_ID = ab_mappe_gruppe.mappe_ID
AND
ab_mappe_gruppe.gruppe_ID = ab_user_gruppe.gruppe_ID
AND
ab_user_gruppe.user_ID = '".$u['user_ID']."'
AND
(
ab_pictures.title LIKE '%".$_REQUEST['soegetxt']."%'
OR
ab_pictures.description LIKE '%".$_REQUEST['soegetxt']."%'
)
ORDER BY changed";

--
- Peter Brodersen

Tobber (11-02-2005)
Kommentar
Fra : Tobber


Dato : 11-02-05 01:20

Takker - det ser ud til være løsningen eller en del af den - for er jeg
selvfølglig straks gået videre med at udbygge modellen.


"Peter Brodersen" <usenet2005@ter.dk> skrev i en meddelelse
news:cugp6k$ih8$1@news.klen.dk...
> On Thu, 10 Feb 2005 23:16:58 +0100, "Tobber" <torben@ringsoe.dk>
> wrote:
>
>> $query = "SELECT *
>> FROM
>> ab_user_gruppe,
>> ab_mappe_gruppe,
>> ab_pictures
>> WHERE
>> ab_pictures.mappe_ID = ab_mappe_gruppe.mappe_ID
>> AND
>> ab_mappe_gruppe.gruppe_ID = ab_user_gruppe.gruppe_ID
>> AND
>> ab_user_gruppe.user_ID = '".$u['user_ID']."'
>> AND
>> ab_pictures.title LIKE '%".$_REQUEST['soegetxt']."%'
>> OR
>> ab_pictures.description LIKE '%".$_REQUEST['soegetxt']."%'
>> ORDER BY changed";
>>
>>det går helt skævt. Hvordan styrer jeg AND/OR og skal jeg joine eller
>>union - jeg ...
>
> "Problemet" er, at AND er stærkere end OR. Så enten skal alle dine
> første joins passe, eller også er det bare ab_pictures.description,
> der skal passe ind. Og så mister du hele join'en.
>
> Prøv fx med:
>
> $query = "SELECT *
> FROM
> ab_user_gruppe,
> ab_mappe_gruppe,
> ab_pictures
> WHERE
> ab_pictures.mappe_ID = ab_mappe_gruppe.mappe_ID
> AND
> ab_mappe_gruppe.gruppe_ID = ab_user_gruppe.gruppe_ID
> AND
> ab_user_gruppe.user_ID = '".$u['user_ID']."'
> AND
> (
> ab_pictures.title LIKE '%".$_REQUEST['soegetxt']."%'
> OR
> ab_pictures.description LIKE '%".$_REQUEST['soegetxt']."%'
> )
> ORDER BY changed";
>
> --
> - Peter Brodersen



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408195
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste