2

クライアント テーブルからいくつかのユーザー データを選択し、別のテーブルからいくつかのカスタム フィールド値を選択しようとしています。私の問題は結果をループしているようです。1 つのカスタム値フィールドごとにクライアント行が重複して表示され続けます。

これは、別のテーブルからクライアント アドレスの詳細とクライアントごとの正しい値を取得するための SQL クエリtblcustomfieldvaluesです。

SELECT
   tblhosting.userid,
   tblclients.id,
   tblclients.firstname,
   tblclients.city,
   tblclients.state,
   tblclients.country,
   tblclients.postcode,
   tblclients.companyname,
   tblclients.ip,
   tblcustomfields.id,
   tblcustomfields.fieldname,
   tblcustomfieldsvalues.fieldid,
   tblcustomfieldsvalues.value 
FROM tblhosting,tblclients,tblcustomfields,tblcustomfieldsvalues
WHERE tblclients.id IS NOT NULL 
AND tblclients.id = tblhosting.userid 
AND tblcustomfields.id=tblcustomfieldsvalues.fieldid 
AND tblcustomfieldsvalues.relid=tblhosting.id
AND tblcustomfieldsvalues.fieldid between 291 and 292

私の問題はtblcustomfieldsvalues、各クライアントとtblclientsアドレスなどから 2 つの行の値を取得する方法です。

クエリを分割し、while ループと forech ループを使用しようとしましたが、clients テーブルから重複した値を取得し続けます。または、クライアントごとに 1 つの customfieldvalue のみ。

4

1 に答える 1

0

"SELECT tblhosting.userid、tblclients.id、tblclients.firstname、tblclients.city、tblclients.state、tblclients.country、tblclients.postcode、tblclients.companyname、tblclients.ip、tblcustomfields.id、tblcustomfields.fieldname、tblcustomfieldsvalues.fieldid tblcustomfieldsvalues.value FROM tblhosting、tblclients、tblcustomfields、tblcustomfieldsvalues "

あなたのコードはひどい見た目です。これは、あなたの構造を理解していない人には読めません。テーブル間のフェッチには、同義語と「join」キーワードを使用する必要があります。


@edit今それは大丈夫に見えます。

于 2012-11-04T01:57:29.220 に答える