এসকিউএল / মাইএসকিএল - স্বতন্ত্র / ইউনিক্য নির্বাচন করুন তবে সমস্ত কলাম ফিরে আসবেন?


373
SELECT DISTINCT field1, field2, field3, ......   FROM table

আমি নীচের স্ক্যুয়াল স্টেটমেন্টটি সম্পাদন করার চেষ্টা করছি তবে আমি এটি চাই যে সমস্ত কলামটি ফেরত পাওয়া সম্ভব? কিছুটা এইরকম:

SELECT DISTINCT field1, * from table

12
SELECT DISTINCT * FROM tableআপনার জন্য কাজ করে না কেন ?
ypercubeᵀᴹ

19
যদি আপনার টেবিলের পিকে থাকে তবে সমস্ত সারি distinctসংজ্ঞা অনুসারে হওয়া উচিত । আপনি যদি কেবলমাত্র নির্বাচন করার চেষ্টা করছেন DISTINCT field1তবে কোনও কোনওরকম অন্য কলামগুলিকে ফিরিয়ে দেন যে কোনও নির্দিষ্ট field1মানের জন্য একাধিক মান রয়েছে এমন কলামগুলির জন্য কী হবে ? GROUP BYঅন্যান্য কলামগুলিতে আপনাকে উদাহরণস্বরূপ ব্যবহার এবং কিছু একত্রিত করার প্রয়োজন হবে ।
মার্টিন স্মিথ

1
আপনি যদি বারবার সারিগুলি চান এবং কেবল স্বতন্ত্র সারিগুলি না চান তবে স্বতন্ত্র কী শব্দটি সরিয়ে ফেলুন।
হাইপারবোরাস

2
আপনি ফলাফলগুলি দেখতে কেমন আশা করেন তার একটি উদাহরণ দিতে পারেন? এখনও অবধি, আমি আপনার পছন্দসই কোয়েরির কোনও ধারণা করতে পারি না।
পুনরাবৃত্তি

3
অনুরোধ করা অনুরূপ প্রশ্নের উত্তর এখানে দেওয়া হল, আপনাকে প্রথমে তাদের আইডিগুলির সাথে স্বতন্ত্র কলামটি পেতে হবে এবং তারপরে এটি মূল টেবিলের সাথে যুক্ত হতে হবে। একটি কলামে DISTINCT নির্বাচন করুন, একাধিক অন্যান্য কলামগুলি ফেরত দিন
যাদাবর

উত্তর:


407

আপনি এর দ্বারা একটি গোষ্ঠী সন্ধান করছেন:

select *
from table
group by field1

যা মাঝে মাঝে বিবৃতিতে স্বতন্ত্রভাবে রচনা করা যেতে পারে:

select distinct on field1 *
from table

বেশিরভাগ প্ল্যাটফর্মগুলিতে, উপরেরগুলির কোনওটিই কাজ করবে না কারণ অন্যান্য কলামগুলির আচরণ অনির্দিষ্ট। (মাইএসকিউএলে প্রথম কাজ করে, যদি এটি আপনি ব্যবহার করেন তবে।)

আপনি স্বতন্ত্র ক্ষেত্রগুলি আনতে এবং প্রতিবার একটি একক স্বেচ্ছাসেবী সারি বাছাই করতে পারে।

কিছু প্ল্যাটফর্মগুলিতে (উদাঃ পোস্টগ্র্যাসকিউএল, ওরাকল, টি এসকিউএল) উইন্ডো ফাংশনগুলি ব্যবহার করে এটি সরাসরি করা যায়:

select *
from (
   select *,
          row_number() over (partition by field1 order by field2) as row_number
   from table
   ) as rows
where row_number = 1

অন্যদের (মাইএসকিউএল, এসকিউএলাইট) এর জন্য আপনাকে এমন সাবউকরি লিখতে হবে যা আপনাকে নিজের সাথে পুরো টেবিলে যোগ দেবে ( উদাহরণস্বরূপ ), তাই প্রস্তাবিত নয়।


10
ক্যোয়ারী আমার জন্য বিশ্লেষণ করবে না এবং একটি ত্রুটি দেয়: The ranking function "row_number" must have an ORDER BY clause। ফিল্ড 1 দ্বারা বিভাজনের পরে ক্লজ অনুসারে ক্রম যুক্ত করতে হবে। সুতরাং সঠিক প্রশ্নটি হবে select * from ( select *, row_number() over (partition by field1 order by orderbyFieldName) as row_number from table ) as rows where row_number = 1
অঙ্কুর-এম

1
ধন্যবাদ! আমিও একই সমস্যায় ছিলাম এবং এর সমাধানটি ছিল GROUP BY
জোয়াকুইন ইরচুক

2
এছাড়াও ওরাকলে (ওরাকল এসকিউএল বিকাশকারী) আপনি উল্লেখ করতে পারবেন না select *, row_number() over (partition by field1 order by field2) as row_number from table। আপনি নির্বাচিত প্রশ্নের মধ্যে স্পষ্টভাবে টেবিলের নাম / উপনাম ব্যবহার করতে হবেselect **table**.*, row_number() over (partition by field1 order by field2) as row_number from table
মেটা

1
@ জারলঃ আজ হতে পারে ... আপনি খেয়াল করতে পারেন, এই উত্তরটি প্রায় 7 বছর পুরানো, এমন একটি সময় যেখানে আমি সক্রিয় থাকাকালীন যখন পিছন থেকে স্মরণ করতে পারি সে ক্ষেত্রে এটি ছিল না। আপনি উত্তরটি প্রয়োজনীয় মনে হলে পুনরায় ট্যাগ করতে এবং / অথবা সম্পাদনা করতে আপনাকে স্বাগত জানাই।
ডেনিস ডি বার্নার্ডি

2
select distinct on (field1) * from table; পোস্টগ্র্রেএসকিউএল
চিলিয়ানু বোগদান

61

আপনার প্রশ্নের বাক্য গঠন থেকে, আমি বুঝতে পেরেছি যে আপনি একটি নির্দিষ্ট ক্ষেত্রের জন্য এবং এই জাতীয় প্রতিটি মানের জন্য একই সারিতে অন্য সমস্ত কলাম মান তালিকাভুক্ত করতে পৃথক মান নির্বাচন করতে চান। সর্বাধিক DBMSs সঙ্গে তন্ন তন্ন এই মঞ্জুরি দেয় না DISTINCTকিংবা GROUP BY, কারণ ফলাফলের নির্ধারিত করা হয় না।

এটি এর মতো চিন্তা করুন: যদি আপনার field1একাধিকবার ঘটে থাকে তবে কোন মানটি field2তালিকাভুক্ত হবে (প্রদত্ত যে field1দুটি সারিতে আপনার একই মান তবে field2সেই দুটি সারিটির দুটি স্বতন্ত্র মান )।

তবে আপনি সামগ্রিক ফাংশন (প্রতিটি ক্ষেত্রের জন্য যা আপনি প্রদর্শিত হতে চান তা স্পষ্টভাবে) এবং এর GROUP BYপরিবর্তে ব্যবহার করতে পারেন DISTINCT:

SELECT field1, MAX(field2), COUNT(field3), SUM(field4), .... FROM table GROUP BY field1

4
এই সমাধানের জন্য +1। সুতরাং আমরা কি করতে পারি SELECT field1, MIN(field2), MIN(field3), MIN(field4), .... FROM table GROUP BY field1, এবং field2, 3, 4 ,,, পূর্ণসংখ্যার (অথবা অন্যান্য সংখ্যার) হতে প্রয়োজন নেই, তারা গৃহস্থালির কাজ ক্ষেত্র হতে পারে হিসাবে ভাল
বৃন্ত

আমি একটি বুলিয়ান কলামে আটকা না হওয়া পর্যন্ত সুন্দরভাবে কাজ করছিলাম। এমআইএন (ডায়নামিক) কলামের মানগুলি সত্য হলেও তা মিথ্যাতে সংশোধিত হয়ে যায় .. বুলিয়ান সম্বোধনের জন্য উপলভ্য অন্য কোনও সামগ্রিক ফাংশন - 6 মিনিট পূর্বে সাইনস্রিতরধর। যোগফল (গতিশীল) 1
টিতে

1
দুর্দান্ত পরামর্শ, আমার সমাধানের দিকে নিয়ে গেল যা আমি আরও সার্বজনীন বলে মনে করি - একবার দেখুন!
গ্যারেট সিম্পসন

@ সিগনস্রিজার আপনার বুলিয়ান একটি সংখ্যায় এবং ব্যবহারের যোগফলে ফেলেছেন; উদাহরণস্বরূপsum(cast(COL as int)) > 0
ড্র হয়েছে

26

আমি যদি আপনার সমস্যাটি সঠিকভাবে বুঝতে পারি তবে এটি আমার সবেমাত্র একটির মতোই। আপনি সমস্ত ডেটা প্রয়োগ না করে নির্দিষ্ট ক্ষেত্রের মধ্যে DISTINCT ব্যবহারের সীমাবদ্ধ করতে সক্ষম হতে চান।

আপনি যদি সামগ্রিক ক্রিয়াকলাপ ছাড়াই গ্রুপ ব্যবহার করেন, যা আপনাকে কখনও গ্রুপ ফিল্ড করে তা আপনার DISTINCT দায়ের করা হবে।

আপনি যদি আপনার প্রশ্নটি করেন:

SELECT * from table GROUP BY field1;

এটি ফিল্ড 1 এর একক উদাহরণের ভিত্তিতে আপনার ফলাফলগুলি প্রদর্শন করবে।

উদাহরণস্বরূপ, যদি আপনার নাম, ঠিকানা এবং শহর সহ একটি টেবিল থাকে। একটি একক ব্যক্তির একাধিক ঠিকানা রেকর্ড করা থাকে তবে আপনি কেবল সেই ব্যক্তির জন্য একটি একক ঠিকানা চান, আপনি নীচের মত জিজ্ঞাসা করতে পারেন:

SELECT * FROM persons GROUP BY name;

ফলাফলটি হবে যে নামেরটির একটি মাত্র উদাহরণ তার ঠিকানার সাথে উপস্থিত হবে এবং অন্য একটিটি ফলাফল সারণী থেকে বাদ যাবে। সাবধানতা: যদি আপনার ফাইলগুলিতে পার্সোনিক মান থাকে যেমন ফার্স্টনাম, লাস্টনাম আপনি উভয় দ্বারা গ্রুপ করতে চান।

SELECT * FROM persons GROUP BY lastName, firstName;

কারণ যদি দুটি ব্যক্তির একই পদবি থাকে এবং আপনি কেবল সর্বশেষ নাম অনুসারে গোষ্ঠী করেন, তবে সেই ব্যক্তির মধ্যে একজনকে ফলাফল থেকে বাদ দেওয়া হবে। আপনার এই বিষয়গুলি বিবেচনায় রাখা দরকার। আশাকরি এটা সাহায্য করবে.


গৃহীত উত্তরে উল্লিখিত হিসাবে, এসকিউএল-র বেশিরভাগ অবতারের জন্য কাজ করবে - কেবল এমওয়াইএসকিউএল
গ্যারেট সিম্পসন

15
SELECT  c2.field1 ,
        field2
FROM    (SELECT DISTINCT
                field1
         FROM   dbo.TABLE AS C
        ) AS c1
        JOIN dbo.TABLE AS c2 ON c1.field1 = c2.field1

কেন এটি C aliasযখন এটি ছাড়া কাজ করতে পারে? লাইনেFROM dbo.TABLE AS C
তালহা

2
আমি বিশ্বাস করি এটি আমার রেডগেট এসকিউএল প্রম্পট ব্যবহারের কারণে। আমি এটি যেভাবে কনফিগার করেছি, এটি সর্বদা অ্যালিয়াস যুক্ত করে - এমনকি অপ্রয়োজনীয় হলেও। এটি "কেবলমাত্র ক্ষেত্রে"
স্টোরমি

এটি আমার জন্য আশাব্যঞ্জক লাগছিল তবে এটি পৃথক ক্ষেত্র নয়, সমস্ত সারি ফিরিয়ে এনেছে 1 :(
মাইকেল জ্বর

13

এটা সত্যিই একটি ভাল প্রশ্ন। আমি ইতিমধ্যে এখানে কিছু দরকারী উত্তর পড়েছি, তবে সম্ভবত আমি আরও সুনির্দিষ্ট ব্যাখ্যা যোগ করতে পারি।

GROUP BY স্টেটমেন্টের মাধ্যমে ক্যোয়ারী ফলাফলের সংখ্যা হ্রাস করা যতক্ষণ আপনি অতিরিক্ত তথ্য অনুসন্ধান না করেন ততক্ষণ সহজ। ধরে নেওয়া যাক আপনি নীচের সারণীটির 'অবস্থানগুলি' পেয়ে গেছেন।

--country-- --city--
 France      Lyon
 Poland      Krakow
 France      Paris
 France      Marseille
 Italy       Milano

এখন কোয়েরি

SELECT country FROM locations
GROUP BY country

ফলাফল হবে:

--country--
 France
 Poland
 Italy

তবে, নিম্নলিখিত কোয়েরি

SELECT country, city FROM locations
GROUP BY country

... এম এস এসকিউএলে একটি ত্রুটি ছুঁড়েছে, কারণ আপনার কম্পিউটার কীভাবে জানতে পারে যে "ফ্রান্স" এর ডানদিকে আপনি মাঠে পড়তে চান সেই তিনটি ফরাসি শহর "লিয়ন", "প্যারিস" বা "মার্সেইল"?

দ্বিতীয় ক্যোয়ারীটি সংশোধন করার জন্য আপনাকে অবশ্যই এই তথ্যটি যুক্ত করতে হবে। এটি করার একটি উপায় হ'ল MAX () বা MIN () ফাংশনগুলি ব্যবহার করে, সমস্ত প্রার্থীর মধ্যে সবচেয়ে বড় বা ক্ষুদ্রতম মান নির্বাচন করে। MAX () এবং MIN () কেবলমাত্র সংখ্যার মানগুলিতে প্রযোজ্য নয়, তবে স্ট্রিং মানগুলির বর্ণানুক্রমিক ক্রমও তুলনা করে।

SELECT country, MAX(city) FROM locations
GROUP BY country

ফলাফল হবে:

--country-- --city--
 France      Paris
 Poland      Krakow
 Italy       Milano

বা:

SELECT country, MIN(city) FROM locations
GROUP BY country

ফলাফল হবে:

--country-- --city--
 France      Lyon
 Poland      Krakow
 Italy       Milano

বর্ণানুক্রমিক (বা সংখ্যাসূচক) ক্রমের উভয় প্রান্ত থেকে আপনার মানটি নির্বাচন করার ক্ষেত্রে আপনি যতক্ষণ না ভাল থাকেন ততক্ষণ এই ফাংশনগুলি একটি ভাল সমাধান। তবে এই ঘটনাটি না হলে কী হবে? আসুন আমরা ধরে নিই যে আপনার একটি নির্দিষ্ট বৈশিষ্ট্যযুক্ত, যেমন 'এম' অক্ষর দিয়ে শুরু করে একটি মান প্রয়োজন। এখন বিষয় জটিল হয়ে উঠছে।

আমি এখনও অবধি কেবলমাত্র সমাধানটি খুঁজে পেলাম আপনার সম্পূর্ণ ক্যোয়ারীটিকে একটি সাবকিউয়েরিতে রেখে দেওয়া এবং এটির বাইরে অতিরিক্ত কলামটি হাতে হাতে তৈরি করা:

SELECT
     countrylist.*,
     (SELECT TOP 1 city
     FROM locations
     WHERE
          country = countrylist.country
          AND city like 'M%'
     )
FROM
(SELECT country FROM locations
GROUP BY country) countrylist

ফলাফল হবে:

--country-- --city--
 France      Marseille
 Poland      NULL
 Italy       Milano

5

দুর্দান্ত প্রশ্ন @aryaxt - আপনি বলতে পারেন যে এটি একটি দুর্দান্ত প্রশ্ন ছিল কারণ আপনি এটি 5 বছর আগে জিজ্ঞাসা করেছিলেন এবং উত্তরটি খুঁজে পাওয়ার চেষ্টা করে আজ আমি হোঁচট খেয়েছি!

আমি কেবল এটি অন্তর্ভুক্ত করার জন্য গৃহীত উত্তরগুলি সম্পাদনা করার চেষ্টা করেছি, তবে আমার সম্পাদনাটি এতে না এলে:

যদি আপনার টেবিলটি এত বড় না ছিল এবং ধরে নেওয়া হয় যে আপনার প্রাথমিক কীটি একটি স্বয়ংক্রিয়-বৃদ্ধিকারী পূর্ণসংখ্যা হয় তবে আপনি এরকম কিছু করতে পারেন:

SELECT 
  table.*
FROM table
--be able to take out dupes later
LEFT JOIN (
  SELECT field, MAX(id) as id
  FROM table
  GROUP BY field
) as noDupes on noDupes.id = table.id
WHERE
  //this will result in only the last instance being seen
  noDupes.id is not NULL


3

আপনি এটি একটি WITHধারা দিয়ে করতে পারেন ।

উদাহরণ স্বরূপ:

WITH c AS (SELECT DISTINCT a, b, c FROM tableName)
SELECT * FROM tableName r, c WHERE c.rowid=r.rowid AND c.a=r.a AND c.b=r.b AND c.c=r.c

এটি আপনাকে WITHক্লোজের ক্যোয়ারিতে নির্বাচিত কেবল সারিগুলি নির্বাচন করতে দেয় ।


2

এসকিউএল সার্ভারের জন্য আপনি নির্দিষ্ট কলামগুলিতে সদৃশ মানগুলির সাথে সমস্ত সারি এবং কলামগুলি পেতে ঘন_রঙ্ক এবং অতিরিক্ত উইন্ডোটিং ফাংশন ব্যবহার করতে পারেন। এখানে একটি উদাহরণ ...

with t as (
    select col1 = 'a', col2 = 'b', col3 = 'c', other = 'r1' union all
    select col1 = 'c', col2 = 'b', col3 = 'a', other = 'r2' union all
    select col1 = 'a', col2 = 'b', col3 = 'c', other = 'r3' union all
    select col1 = 'a', col2 = 'b', col3 = 'c', other = 'r4' union all
    select col1 = 'c', col2 = 'b', col3 = 'a', other = 'r5' union all
    select col1 = 'a', col2 = 'a', col3 = 'a', other = 'r6'
), tdr as (
    select 
        *, 
        total_dr_rows = count(*) over(partition by dr)
    from (
        select 
            *, 
            dr = dense_rank() over(order by col1, col2, col3),
            dr_rn = row_number() over(partition by col1, col2, col3 order by other)
        from 
            t
    ) x
)

select * from tdr where total_dr_rows > 1

এটি কল 1, কল 2 এবং কল 3 এর প্রতিটি স্বতন্ত্র সংমিশ্রণের জন্য একটি সারি গণনা নিচ্ছে।


অত্যন্ত জটিল এবং এসকিউএল এর একটি বাস্তবায়নের জন্য নির্দিষ্ট
গ্যারেট সিম্পসন

1
select min(table.id), table.column1
from table 
group by table.column1

এটি আমার জন্য কাজ করেছে !! এটি লক্ষ করার মতো, আপনি যদি fetch_array () ব্যবহার করে থাকেন তবে আপনাকে প্রতিটি সারি সূচক নামটির পরিবর্তে কল করার পরিবর্তে সূচি লেবেলের মাধ্যমে কল করতে হবে। আমার কাছে যে উদাহরণ রয়েছে তা লেখার জন্য এর পক্ষে পর্যাপ্ত অক্ষর নেই: এক্স সরি !!
ব্র্যান্ডন প্রিন্টিস

0
SELECT *
FROM tblname
GROUP BY duplicate_values
ORDER BY ex.VISITED_ON DESC
LIMIT 0 , 30

মধ্যে ORDER BYআমি শুধু এখানে উদাহরণস্বরূপ করা আছে, সেই জন্যই এই মধ্যে আইডি ক্ষেত্র যোগ করতে পারেন


গৃহীত উত্তরে উল্লিখিত হিসাবে, এসকিউএল-র বেশিরভাগ অবতারের জন্য কাজ করবে - কেবল এমওয়াইএসকিউএলের জন্য
গ্যারেট সিম্পসন

0

এটি অন্য কোথাও এটি খুঁজে পেয়েছে তবে এটি একটি সহজ সমাধান যা কাজ করে:

 WITH cte AS /* Declaring a new table named 'cte' to be a clone of your table */
 (SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY val1 DESC) AS rn
 FROM MyTable /* Selecting only unique values based on the "id" field */
 )
 SELECT * /* Here you can specify several columns to retrieve */
 FROM cte
 WHERE rn = 1

এমএসএসকিউএল
মাইকেল জ্বর

-1

আপনার ক্যোয়ারীর মতো দেখাতে পারে এমন নকলগুলির জন্য আপনি যে ফিল্ডটি পরীক্ষা করতে চান তাতে গ্রুপের মাধ্যমে যোগ করুন

SELECT field1, field2, field3, ......   FROM table GROUP BY field1

ক্ষেত্র 1 নকল রেকর্ড বাদ দিতে চেক করা হবে

অথবা আপনি যেমন জিজ্ঞাসা করতে পারেন

SELECT *  FROM table GROUP BY field1

ফিল্ড 1 এর সদৃশ রেকর্ডগুলি নির্বাচন থেকে বাদ দেওয়া হয়েছে


1
গ্রুপের মাধ্যমে গ্রুপ অবশ্যই নির্বাচিত ক্ষেত্রগুলির সাথে মেলে। অন্যথায় এটি ত্রুটি ছুঁড়ে ফেলবেfiled2 must appear in the GROUP BY clause or be used in an aggregate function
ভিউউ-এ

-2

কেবলমাত্র আপনার সমস্ত ক্ষেত্রের গ্রুপের মাধ্যমে গ্রুপটি অন্তর্ভুক্ত করুন।


3
এটির উত্তম উত্তর দেওয়ার জন্য, আপনি কী বোঝাতে চাইছেন সে সম্পর্কে আপনার আরও কিছু বিশদ অন্তর্ভুক্ত করা উচিত।
রবার্ট

-2

এটি অভ্যন্তরীণ কোয়েরি দ্বারা করা যেতে পারে

$query = "SELECT * 
            FROM (SELECT field
                FROM table
                ORDER BY id DESC) as rows               
            GROUP BY field";

2
এটি প্রশ্নের উত্তর দেয় না, ওপি টেবিলের সমস্ত ডেটা পাওয়ার চেষ্টা করেছিল তবে একক ক্ষেত্রের ডুপ্লিকেট সম্বলিত সারিগুলি সরিয়ে
গ্যারেট সিম্পসন

-3
SELECT * from table where field in (SELECT distinct field from table)

7
যে কাজ করবে না। আপনি সাবকোয়ারিতে স্বতন্ত্র কলামটি নির্বাচন করেছেন তবে যেখানে অনুচ্ছেদে সেই মানটি সহ সমস্ত কলাম পাওয়া যায়। সুতরাং ক্যোয়ারী 'টেবিল থেকে নির্বাচন করুন *' লেখার মতোই উত্তম, যদি না 'ক্ষেত্র' কলামটি অনন্য কলাম হয় তবে সেই ক্ষেত্রে এই কলামটিতে আলাদা করার প্রয়োজন নেই।
অঙ্কুর-এম

-3

তিনটি কলামের মান যদি টেবিলের মধ্যে স্বতন্ত্র থাকে তবে নির্বাচন করুন নির্বাচন করুন ফিল্ড 1, ফিল্ড 2, ট্যাবলেট 1 থেকে ফিল্ড 3 কাজ করে।

উদাহরণস্বরূপ, প্রথম নামের জন্য যদি আপনার একাধিক অভিন্ন মান থাকে তবে নির্বাচিত কলামগুলিতে সর্বশেষ নাম এবং অন্যান্য তথ্য আলাদা হয় তবে ফলাফল সেটটিতে রেকর্ডটি অন্তর্ভুক্ত করা হবে।


2
এটি প্রশ্নের উত্তর দেয় না, ওপি টেবিলের সমস্ত ডেটা পাওয়ার চেষ্টা করছিল তবে একক ক্ষেত্রের নকলগুলি সহ সারিগুলি সরিয়ে ফেলবে
গ্যারেট সিম্পসন

-3

আমি ব্যবহার করার পরামর্শ দিতে হবে

SELECT  * from table where field1 in 
(
  select distinct field1 from table
)

এইভাবে যদি একাধিক সারি জুড়ে আপনার ফিল্ড 1 তে একই মান থাকে তবে সমস্ত রেকর্ডগুলি ফিরে আসবে।


1
এটির সাথে আলাদাও নয় SELECT * FROM table;। আরও বেশি এটি ধীর।
শিন কিম

দয়া করে, আপনার উত্তরটি প্রথমে চেষ্টা করুন।
শেরিফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.