私はどのようにしたいのですか?ベストプラクティスのために別のアプローチを取っています。これはドキュメンテーションを読んで作成されたので、私はログの周りを回っていたかもしれません。値が別のテーブルにある場合は、特定の列を選択してください
SELECT c.id, c.first_name, c.last_name,
IF(c.id IN (SELECT client_id FROM bookings) AND '1' IN (SELECT practitioner_id FROM bookings) , c.address1, NULL) as address1,
IF(c.id IN (SELECT client_id FROM bookings) AND '1' IN (SELECT practitioner_id FROM bookings) , c.address2, NULL) as address2,
IF(c.id IN (SELECT client_id FROM bookings) AND '1' IN (SELECT practitioner_id FROM bookings) , c.town, NULL) as town,
IF(c.id IN (SELECT client_id FROM bookings) AND '1' IN (SELECT practitioner_id FROM bookings) , c.county, NULL) as county,
IF(c.id IN (SELECT client_id FROM bookings) AND '1' IN (SELECT practitioner_id FROM bookings) , c.postcode, NULL) as postcode,
IF(c.id IN (SELECT client_id FROM bookings) AND '1' IN (SELECT practitioner_id FROM bookings) , c.email, NULL) as email,
IF(c.id IN (SELECT client_id FROM bookings) AND '1' IN (SELECT practitioner_id FROM bookings) , c.dob, NULL) as dob
FROM clients c
あなたは何をしようとしていますか? –
いいえ、これは間違いなく正しくありません。予約テーブルに行が1つしかない場合を除き、おそらく間違った結果が出ている可能性があります。これをここで 'AND '1' IN(SELECT practitioner_id FROM bookings)'と呼びます。これは、c.idがテーブルの予約に含まれているかどうかをチェックする前のステートメントを完全に無視しています。あなたはそれがそれに関連すべきだと思ったかもしれませんが、そうではありません。 –
ログインしている人と一緒に予約されている場合にのみクライアント情報を返そうとしています。そうしないと、ログインした人に姓と名が表示されません。この声明は正しい結果を得て、悪い習慣を学んでいないことを確認したいだけです。 – Bish25