|
| 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
| |
|
|