0

データベースに 2 つのテーブルがあります。

users('user_id', 'name', 'surname', 'email')

および表:

profile('profile_id', 'country')

私のphpスクリプトには、ユーザーが名前を挿入する検索ボックスがあり、検索スクリプトはデータベースから米国のすべての名前を選択しようとします。SQLステートメントの書き方についてのアイデア。これは私がやったことですが、機能していません。

$sql = " SELECT u.name,u.surname, u.email,u.user_id,p.profile_id FROM users u 
         LEFT JOIN profile p ON p.country = 'uk'
         WHERE ((u.surname LIKE '$name%' AND u.name LIKE '$surname%') OR 
         (u.surname LIKE '$surname%' AND u.name LIKE '$name%')) AND country IS NOT NULL";

一部のユーザーは自分の国をプロファイル ページに入力していない可能性があるため、国に IS NOT NULL を使用しました。

4

2 に答える 2

1

何かが欠けていない限り、これはうまくいきます:

$sql = " SELECT u.name, 
  u.surname, 
  u.email, 
  u.user_id,
  p.profile_id
FROM users u 
    INNER JOIN profile p ON p.country = 'usa'
WHERE ((u.surname LIKE '$name%' AND u.name LIKE '$surname%') OR 
    (u.surname LIKE '$surname%' AND u.name LIKE '$name%'))

は条件INNER JOIN必要性を取り除き、ではなくからユーザを検索するように設定されています。IS NOT NULLcountryusauk

@Sina の観察によると、このクエリは最初から奇妙です。どのようusersprofile関連付けますか?profile_idが の場合、次のuser_idように結合を適切に機能させます。

INNER JOIN profile p ON p.profile_id = u.user_id AND p.country = 'usa'
于 2013-07-24T12:09:32.163 に答える