Member 13974974 Ответов: 2

Этот запрос работает не для всех идентификаторов..(даже если они не являются нулевыми)


Я пробовал его для разных идентификаторов свойств, но он не работает для некоторых идентификаторов. Я не знаю, что не так с этим кодом?

Что я уже пробовал:

select distinct Property.Id,Property.Name,
 Person.FirstName,Person.MiddleName,Person.LastName,
 ad.Number,ad.Suburb,ad.Street,ad.City,ad.Region,ad.PostCode,Property.Bedroom,Property.Bathroom,
 PropertyRentalPayment.Amount AS Rental_Payment,TenantPaymentFrequencies.Code AS Rental_Frequency
 
 
 from Property,Address ad,PropertyRentalPayment,TenantPaymentFrequencies,OwnerProperty,Person,TenantProperty
 
where Property.AddressId=ad.AddressId
 AND Property.Id=PropertyRentalPayment.PropertyId
 AND TenantPaymentFrequencies.Id=PropertyRentalPayment.FrequencyType
 AND TenantProperty.PropertyId=Property.Id
 AND Person.Id=OwnerProperty.OwnerId
 AND Property.Id=OwnerProperty.PropertyId
 AND TenantProperty.PaymentFrequencyId=TenantPaymentFrequencies.Id
 AND Property.Id=@PropertyId;

2 Ответов

Рейтинг:
8

OriginalGriff

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

Но... Я бы предположил, что вы думаете, что это уменьшит количество строк: вероятно, это не так. Не зная вашей схемы БД и взаимосвязи между вашими таблицами, мы не можем сказать: "сделайте это, и это исправит это", но я настоятельно рекомендую вам начать с просмотра операторов SQL JOIN для выбора ваших данных строк вместо того, чтобы перечислять 7 или около того таблиц в качестве источника данных.
Это может помочь: SQL-соединения[^]


Рейтинг:
0

Maciej Los

Забудьте о "старомодных соединениях"! Начните использовать правильный типы соединений[^], как например: INNER | LEFT |RIGHT |CROSS JOIN.

SELECT DISTINCT PRO.Id, PRO.Name, PER.FirstName, PER.MiddleName, PER.LastName,
    AD.Number, AD.Suburb, AD.Street, AD.City, AD.Region, AD.PostCode, PRO.Bedroom, PRO.Bathroom,
    PRP.Amount AS Rental_Payment,TPF.Code AS Rental_Frequency
FROM Property AS PRO
    INNER JOIN Address AS AD ON PRO.AddressId=AD.AddressId
    INNER JOIN PropertyRentalPayment AS PRP ON PRO.Id=PRP.PropertyId
    INNER JOIN TenantProperty TPR ON TPR.PropertyId=PRO.Id
    INNER JOIN TenantPaymentFrequencies AS TPF ON TPF.Id=PRP.FrequencyType AND TPR.PaymentFrequencyId=TPF.Id
    INNER JOIN OwnerProperty AS OWP ON PRO.Id=OWP.OwnerId
    INNER JOIN Person AS PER ON [!Missed_Relationship!]
WHERE PRO.Id=@PropertyId;


Для получения более подробной информации, пожалуйста, ознакомьтесь с этой замечательной статьей: Визуальное представление SQL-соединений[^]

Удачи вам!