0

連絡先と呼ばれるアドレス帳があります。連絡先を整理するために、グループ (家族、友人、職場など) を用意しています。たとえば、グループごとに表示する連絡先の例を 4 つまたは 10 プルしたいと考えています。これは、すべてのグループが一覧表示されるグループ インデックス ページを対象としていますが、グループごとの連絡先の完全な一覧を表示することを意図したものではありません (専用のグループ ページのみ)。

グループ テーブルと列

email_groups

idid_username

連絡先の表と列

email_contacts

idid_groupid_username

私はこれに取り組んできましたが、 の列名が間違っていますc1

SELECT 
eg.id, 
eg.name, 
(SELECT c1.name FROM email_contacts AS c1 WHERE id_user='1' LIMIT 0,1) AS contact_1, 
(SELECT c2.name FROM email_contacts AS c1 WHERE id_user='1' LIMIT 1,1) AS contact_2, 
(SELECT c3.name FROM email_contacts AS c3 WHERE id_user='1' LIMIT 2,1) AS contact_3, 
(SELECT c4.name FROM email_contacts AS c4 WHERE id_user='1' LIMIT 3,1) AS contact_4 
FROM email_groups AS eg 
INNER JOIN email_contacts AS ec on ec.id=eg.id_group
4

1 に答える 1

0

サブクエリでエイリアスC1を2回提供しましたがC2、2番目のサブクエリ用だと思います。選択しようとしてc2.nameいますが、エイリアスをc1 SELECT c2.name FROM email_contacts AS c1として提供しています

SELECT 
eg.id, 
eg.name, 
(SELECT c1.name FROM email_contacts AS c1 WHERE id_user='1' LIMIT 0,1) AS contact_1, 
(SELECT c2.name FROM email_contacts AS c2 WHERE id_user='1' LIMIT 1,1) AS contact_2, 
(SELECT c3.name FROM email_contacts AS c3 WHERE id_user='1' LIMIT 2,1) AS contact_3, 
(SELECT c4.name FROM email_contacts AS c4 WHERE id_user='1' LIMIT 3,1) AS contact_4 
FROM email_groups AS eg 
INNER JOIN email_contacts AS ec on ec.id=eg.id_group
于 2013-09-21T14:36:37.000 に答える