目前,我正在爲我的框架腳手架編寫一個模型系統。但是,我的SQL技能並不是那麼好。目前,我的系統正在產生這個查詢。SQL加入和限制
SELECT
`User`.`id` AS `User_id`,
`User`.`name` AS `User_name`,
`Address`.`id` AS `Address_id`,
`Address`.`address` AS `Address_address`,
`Address`.`user_id` AS `Address_user_id`,
`Database`.`id` AS `Database_id`,
`Database`.`user_id` AS `Database_user_id`
FROM
`users` AS `User`,
`addresses` AS `Address`,
`databases` AS `Database`
GROUP BY `User_id`,`Address_id`,`Database_id`
HAVING
`User`.`id` = 1 AND
`Address`.`user_id` = `User`.`id` AND
`Database`.`user_id` = `User`.`id`;
產生這種結果。
User_id User_name Address_id Address_address Address_user_id Database_id Database_user_id
======= ========= ========== =============== =============== =========== ================
1 Nat 1 1234 1 1 1
1 Nat 1 1234 1 2 1
1 Nat 2 3456 1 1 1
1 Nat 2 3456 1 2 1
這工作正常,但我知道我可能不這樣做的最佳方式(我也許應該利用真實的連接?),這讓我可以從這裏極其有限的做。
例如,如果我想限制爲一個地址(對於oneToOne關係),而不影響oneToMany數據庫關係。我如何修改這個SQL來做到這一點?
這是最好的想法甚至可以做一個查詢嗎?
根據我對你的結構的理解,'User'可能有很多'Address',但你只想顯示最多1個? – Matthew
是的,但仍顯示所有的數據庫行。 – Nathaniel