Обычно вы получаете такой отказ, когда отправляете приложение, в котором есть известный бренд, во имя приложения, значка, внутри приложения или в метаданных. Например, если ваша компания является «Milkshakes Ltd.», и вы используете бренд «Nike» от имени своего приложения «Milkshakes - Nike Edition».
Это обычно происходит, когда компания просит вас - разработчика - создать и приложение для них, и вы пытаетесь выпустить приложение под своей учетной записью разработчика. Но приложение должно быть выпущено под учетной записью разработчика компании (компании необходимо зарегистрировать Программу разработчиков Apple, если она еще не сделала этого). Вот почему Apple советует следующее:
Если вы разработали эти приложения от имени клиента, пожалуйста, сообщите своему клиенту, чтобы добавить вас в команду разработчиков своей учетной записи Apple Developer.
blockquote>Освобождение приложений под другой учетной записью относится к Лицензионному соглашению с Программой разработчиков Apple:
Для ясности вы можете разрешить подрядчикам разрабатывать Приложения от вашего имени, но любые такие Заявки должны принадлежать Вам, представленные на вашей собственной учетной записи разработчика, и распространяются как Приложения только в том виде, как это прямо разрешено здесь. Вы несете ответственность перед Apple за работу своих контрагентов по вашей учетной записи (например, добавив их в свою команду для выполнения работ по разработке для вас) и их соответствия настоящему Соглашению. Любые действия, предпринимаемые вашими подрядчиками в связи с настоящим Соглашением, считаются вами, и вы (помимо ваших подрядчиков) несут ответственность перед Apple за все такие действия.
blockquote>Однако, основываясь на вашем описании, это не выглядит так. Я не знаю ни о каких известных «обеспеченных» или «безопасных» брендах. Вы не указали название своей компании, это может быть конфликт. Я попытался бы разъяснить проблему с Apple Review Team, ответив на проблему в Центре резолюции. Они могут указать вам бренд, с которым вы столкнулись. Или это могло быть отклонено ошибкой.
Пользователи, у которых один из 3 страны
SELECT DISTINCT user_id
FROM table
WHERE ancestry IN('England','France','Germany')
Пользователи, у которых все 3 страны
SELECT DISTINCT A.userID
FROM table A
INNER JOIN table B on A.user_id = B.user_id
INNER JOIN table C on A.user_id = C.user_id
WHERE A.ancestry = 'England'
AND B.ancestry = 'Germany'
AND C.ancestry = 'France'
Попробуйте следующее:
Select user_id
from yourtable
where ancestry in ('England', 'France', 'Germany')
group by user_id
having count(user_id) = 3
Последняя строка означает, что у пользователя есть все 3 страны.
SELECT DISTINCT (user_id)
FROM [user]
WHERE user.user_id In (select user_id from user where ancestry = 'England')
And user.user_id In (select user_id from user where ancestry = 'France')
And user.user_id In (select user_id from user where ancestry = 'Germany');`
получить людей с несколькими странами:
SELECT u1.user_id
FROM users u1
JOIN users u2
on u1.user_id = u2.user_id
AND u1.ancestry <> u2.ancestry
Получить людей из 2-х стран:
SELECT u1.user_id
FROM users u1
JOIN users u2
on u1.user_id = u2.user_id
WHERE u1.ancestry = 'Germany'
AND u2.ancestry = 'France'
Для 3 страны ... присоединяются три раза. Чтобы получить результат (ы) один раз, различный.
Это приведет к тому, что у пользователей будет 3 строки (с ... count), а затем вы укажете какие линии разрешены. Обратите внимание, что если у вас нет UNIQUE KEY на (user_id, ancestry)
, пользователь с «id, england», который появляется 3 раза, также будет соответствовать ... так что это зависит от структуры вашей таблицы и / или данных.
SELECT user_id
FROM users u1
WHERE ancestry = 'Germany'
OR ancestry = 'France'
OR ancestry = 'England'
GROUP BY user_id
HAVING count(DISTINCT ancestry) = 3
WHERE
выше GROUP BY
. И используйте COUNT(DISTINCT ancestry)
.
– Bill Karwin
24 August 2011 в 18:13
Этот вопрос несколько лет, но я пришел через дубликат. Я хочу предложить более общее решение. Если вы знаете, что у вас всегда есть фиксированное число предков, вы можете использовать некоторые собственные объединения, как уже было предложено в ответах. Если вы хотите, чтобы общий подход продолжал чтение.
То, что вам нужно здесь, называется Quotient в реляционной алгебре. Котировщик - это более или менее обратное декартово произведение (или Cross Join в SQL).
Предположим, что ваш предок установлен A
(я использую здесь обозначение таблицы, я думаю, что это лучше для понимания)
ancestry
-----------
'England'
'France'
'Germany'
и ваш пользовательский набор U
user_id
--------
1
2
3
Декартовым произведением C=AxU
является следующее:
user_id | ancestry
---------+-----------
1 | 'England'
1 | 'France'
1 | 'Germany'
2 | 'England'
2 | 'France'
2 | 'Germany'
3 | 'England'
3 | 'France'
3 | 'Germany'
Если вы вычислите коэффициент распределения U=C/A
, вы получите
user_id
--------
1
2
3
Если вы переделаете декартовский продукт UXA
, вы снова получите C
. Но учтите, что для набора T
, (T/A)xA
не обязательно будет воспроизводить T
. Например, если T
является
user_id | ancestry
---------+-----------
1 | 'England'
1 | 'France'
1 | 'Germany'
2 | 'England'
2 | 'France'
, тогда (T/A)
есть
user_id
--------
1
(T/A)xA
будет тогда
user_id | ancestry
---------+------------
1 | 'England'
1 | 'France'
1 | 'Germany'
Примечание что записи для user_id=2
были устранены операциями Quotient и Cartesian Product.
Ваш вопрос: у какого user_id есть предки из всех стран вашего предка? Другими словами, вы хотите U=T/A
, где T
- ваш исходный набор (или ваша таблица).
Чтобы реализовать фактор в SQL, вам нужно выполнить 4 шага:
Итак, давайте сделаем это шаг шаг за шагом. Я буду использовать синтаксис TSQL (сервер Microsoft SQL), но его легко адаптировать к другим СУБД. В качестве имени таблицы (user_id, ancestry)
выберите ancestor
CREATE TABLE ancestry_set (ancestry nvarchar(25))
INSERT INTO ancestry_set (ancestry) VALUES ('England')
INSERT INTO ancestry_set (ancestry) VALUES ('France')
INSERT INTO ancestry_set (ancestry) VALUES ('Germany')
CREATE TABLE ancestor ([user_id] int, ancestry nvarchar(25))
INSERT INTO ancestor ([user_id],ancestry) VALUES (1,'England')
INSERT INTO ancestor ([user_id],ancestry) VALUES(1,'Ireland')
INSERT INTO ancestor ([user_id],ancestry) VALUES(2,'France')
INSERT INTO ancestor ([user_id],ancestry) VALUES(3,'Germany')
INSERT INTO ancestor ([user_id],ancestry) VALUES(3,'Poland')
INSERT INTO ancestor ([user_id],ancestry) VALUES(4,'England')
INSERT INTO ancestor ([user_id],ancestry) VALUES(4,'France')
INSERT INTO ancestor ([user_id],ancestry) VALUES(4,'Germany')
INSERT INTO ancestor ([user_id],ancestry) VALUES(5,'France')
INSERT INTO ancestor ([user_id],ancestry) VALUES(5,'Germany')
1) Создайте декартово произведение вашего набора предков и набор всех user_ids.
SELECT a.[user_id],s.ancestry
FROM ancestor a, ancestry_set s
GROUP BY a.[user_id],s.ancestry
2) Найдите все записи в декартовом продукте, которые не имеют партнера в исходном наборе (Left Join) и
3) Извлеките user_ids из набора результатов из 2)
SELECT DISTINCT cp.[user_id]
FROM (SELECT a.[user_id],s.ancestry
FROM ancestor a, ancestry_set s
GROUP BY a.[user_id],s.ancestry) cp
LEFT JOIN ancestor a ON cp.[user_id]=a.[user_id] AND cp.ancestry=a.ancestry
WHERE a.[user_id] is null
4) Верните все user_ids из исходного набора, которые не включены в результирующий набор из 3)
SELECT DISTINCT [user_id]
FROM ancestor
WHERE [user_id] NOT IN (
SELECT DISTINCT cp.[user_id]
FROM (SELECT a.[user_id],s.ancestry
FROM ancestor a, ancestry_set s
GROUP BY a.[user_id],s.ancestry) cp
LEFT JOIN ancestor a ON cp.[user_id]=a.[user_id] AND cp.ancestry=a.ancestry
WHERE a.[user_id] is null
)
один из подходов, если вы хотите получить все user_id, который удовлетворяет всем условиям:
SELECT DISTINCT user_id FROM table WHERE ancestry IN ('England', '...', '...') GROUP BY user_id HAVING count(*) = <number of conditions that has to be satisfied>
и т. д. Если вам нужно взять все user_id, которые удовлетворяют хотя бы одному условию, то вы можете сделать
SELECT DISTINCT user_id from table where ancestry IN ('England', 'France', ... , '...')
. Я не знаю, есть ли что-то похожее на IN, но которое объединяет условия с AND вместо OR
грубая сила (и только проверена в системе Oracle, но я думаю, что это довольно стандартный):
select distinct usr_id from users where user_id in (
select user_id from (
Select user_id, Count(User_Id) As Cc
From users
GROUP BY user_id
) Where Cc =3
)
and ancestry in ('England', 'France', 'Germany')
;
edit: Мне нравится @ ответ HuckIt еще лучше.