2013-05-08 3 views
0

я не знаю, как сделать конкретный вопрос для этой проблемы, поэтому я буду стараться изо всех сил, чтобы объяснить сценариюSQL Как выбрать возвращаемое значение в том же заявлении

В таблице в вопрос следующие столбцы.

**Table#1 Patients** 
-PatID 
-Name 
-Guarantor FK_PatID (Refer to Patients Table) 

Хорошо, скажем, я хочу выбрать имя пациента и имя его гаранта в таблице из одного SQL-запроса.

SELECT p.Name, p.Guarantor 
FROM Patients P 

Это заявление будет получить мне имя пациента и PatID Поручителя, но как я могу соответствовать ID этого гаранта, чтобы получить его имя в одном операторе SQL?

+0

домашнее задание вопрос? –

+0

Вряд ли. Больше похоже на разработчика, который является новым для SQL. – Renan

+0

У вас действительно есть имя поручителя? может быть, во 2-м столе? –

ответ

5

Вы можете присоединиться к столу на себе

SELECT P.Name, P.Guarantor, P2.Name 
FROM Patients P 
INNER JOIN Paitents P2 on P2.PatId = P.Guarantor 
+0

Спасибо .. Это то, что ищет =) – Jay

-1
Select p.name from Patients p where 
p.guarantor in (select p1.guarantor from patients p1 where name = 'foo') 

Это позволит получить вам имена поручителей для всех пациентов называется Foo. Вы просто используете запрос в предложении where другого запроса.

+0

Оператор IN вот своего рода путаный способ совершить самосоединение по соотношению 1: 1. –

0

Это классический пример SELF JOIN

SELECT 
P1.Name, 
P1.Guarantor+ 'is Guarantor of' +P2.Name 
FROM Patients P1 
INNER JOIN Paitents P2 on P2.PatId = P1.Guarantor 

Похожая STACK OVERFLOW QUESTION

Смежные вопросы