PHP හි සම්බන්ධිත වගු වලින් දත්ත ලබා ගැනීම
අපි සියලුම භාවිතාකරුවන් ඔවුන්ගේ නගර සමඟ ලබා ගන්න විමසුමක් සකස් කරමු. මේ සඳහා අපට
LEFT
JOIN විධානය අවශ්ය වනු ඇත:
එහි වාක්ය ඛණ්ඩය පහත පරිදි වේ:
sqlSELECT fields FROM table_name
LEFT JOIN related_table_name ON join_condition
WHERE selection_condition
මෙම විධානයේ වාක්ය ඛණ්ඩයේ කොටස් වෙන් වෙන් වශයෙන් බලමු.
ක්ෂේත්ර
තෝරාගැනීම කිහිපයක් වගු වලින් සිදුවන බැවින්,
* හරහා සියලුම ක්ෂේත්ර තෝරා ගැනීම
ක්රියා නොකරනු ඇත. පහත විමසුම ප්රධාන වගුවේ ක්ෂේත්ර පමණක් තෝරාගනු ඇත,
නමුත් සම්බන්ධිත වගුවේ ක්ෂේත්ර නොවේ:
sqlSELECT *
සියලුම වගු වලින් දත්ත තෝරාගැනීමට,
* ඉදිරියේ තෝරාගැනීම සඳහා වගුවේ නම
සඳහන් කළ යුතුය:
sqlSELECT users.*, cities.*
එසේත් නැතිනම් අවශ්ය ක්ෂේත්ර ඒවායේ ඉදිරියේ වගුවේ නම සඳහන් කර ගණනය කළ හැකිය:
sqlSELECT users.name, cities.name
මෙම ක්රම දෙකට ගැටලුවක් ඇත. කාරණය නම්, වගු වල ක්ෂේත්රවලට එකම නම් තිබේ නම්, PHP අරාවේ නම් ගැටුමක් සිදුවන අතර එක් ක්ෂේත්රයක් පමණක් ජයග්රහණය කරනු ඇත, දෙවැන්න නොපවතිනු ඇත.
ගැටලුව විසඳීම සඳහා ගැටෙන නම්
as විධානය හරහා නැවත නම් කළ යුතුය:
sqlSELECT users.name, cities.name as city_name
සම්බන්ධතාවය
ON විධානයෙන් පසුව අපි
සම්බන්ධතාවය සිදුවන වගු දෙකෙහි ක්ෂේත්ර
සඳහන් කළ යුතුය. අපගේ අවස්ථාවේ දී එය වගුවේ id
ක්ෂේත්රය වනු ඇත
නගර සහ city_id ක්ෂේත්රය
භාවිතාකරුවන්ගේ වගුවෙන්:
sqlON cities.id=users.city_id
විමසුම
අවසානයේදී, භාවිතාකරුවන් ඔවුන්ගේ නගර සමඟ ලබා ගන්න විමසුම පහත පරිදි වනු ඇත:
sqlSELECT
users.name, cities.name as city_name
FROM
users
LEFT JOIN cities ON cities.id=users.city_id
ප්රායෝගික කාර්යයන්
ඔබට භාණ්ඩ සහිත වගුවක් සහ වගුවක් ඇතැයි සිතමු ඔවුන්ගේ ප්රවර්ග සමඟ. භාණ්ඩවල නම් ලබා ගන්න විමසුමක් ලියන්න ඔවුන්ගේ ප්රවර්ග සමඟ.