PDA

View Full Version : سوال: چرا این کوئری به درستی سطرهای مورد نظر رو انتخاب نمی کنه؟



idocsidocs
سه شنبه 12 مهر 1390, 17:45 عصر
توی این کوئری من می خوام که سطر هایی که ای پی متفاوتی دارن رو انتخاب کنم اما این اتفاق نمیافته. لطفا راهنمایی کنید و بگید که این کوئری چه مشکلی داره؟



$sql_row = "SELECT DISTINCT(`ip`),`rowid`, `os`, `browser`, `reffer`, `time` FROM `statistics` ORDER BY `rowid` DESC LIMIT 150, 20";

blackmak
سه شنبه 12 مهر 1390, 22:15 عصر
اینطوری بنویس ببین جواب میده :
$sql_row = "SELECT DISTINCT ip FROM statistics ORDER BY rowid DESC LIMIT 20,150";
راستی اگه اتفاق نمیفته چی میشه ؟ error میده ؟

idocsidocs
سه شنبه 12 مهر 1390, 22:56 عصر
اینطوری بنویس ببین جواب میده :
این کوئری جواب می ده ولی فقط یه ستون انتخاب می شه. من می خوام همه ستونها رو بکشم بیرون.


راستی اگه اتفاق نمیفته چی میشه ؟ error میده ؟
هیچ اروری داده نمی شه ولی فقط یه ستون انتخاب می شه. من می خوام همه ستونها رو انتخاب کنم. چطور باید این مشکل رو حل کنم؟

Reza1607
سه شنبه 12 مهر 1390, 23:14 عصر
كوئريتون رو به صورت زير تغير بدين
$sql_row = "SELECT
`ip`,`rowid`,
`os`, `browser`,
`reffer`, `time` FROM
`statistics` WHERE ip in(SELECT DISTINCT(`ip`) FROM `statistics`) ORDER BY
`rowid` DESC LIMIT 150,
20";
دليل اين كه كوئري شما نتيجه مورد نظرتون رو نشون نمي داد در اين هست كه دستور DISTINCT‏ تنها سطرهاي تكراري رو يكبار در خروجي مياره

idocsidocs
سه شنبه 12 مهر 1390, 23:46 عصر
دليل اين كه كوئري شما نتيجه مورد نظرتون رو نشون نمي داد در اين هست كه دستور DISTINCT‏ تنها سطرهاي تكراري رو يكبار در خروجي مياره
الان از یه ساب کوئری استفاده شده، نمی شه فقط از یه کوئری استفاده کرد؟

Reza1607
چهارشنبه 13 مهر 1390, 18:33 عصر
$sql_row = "SELECT `ip`,`rowid`, `os`, `browser`, `reffer`, `time` FROM `statistics` GROUP BY ip ORDER BY `rowid` DESC LIMIT 150, 20";

از اين كوئري استفاده كنيد ببينيد درست ميشه

idocsidocs
چهارشنبه 13 مهر 1390, 19:16 عصر
$sql_row = "SELECT `ip`,`rowid`, `os`, `browser`, `reffer`, `time` FROM `statistics` GROUP BY ip ORDER BY `rowid` DESC LIMIT 150, 20";

از اين كوئري استفاده كنيد ببينيد درست ميشه
این کوئری از سینتکسش معلومه که روی همه سطرها اجرا می شه و همه سطرها رو می کشه بیرون. من می خوام سطرهایی که آی پی متفاوتی دارن رو بکشم بیرون.

Reza1607
چهارشنبه 13 مهر 1390, 20:18 عصر
نه اشتباه نكنيد اين كوئري داده ها رو براساس ip گروه بندي مي كنه و زماني كه چند ip يكسان باشه تنها يكي از اون ها رو مياره
شما امتحان كنيد ببينيد اون چيزي رو كه مي خواين برمي گردونه يا نه؟

idocsidocs
چهارشنبه 13 مهر 1390, 22:28 عصر
نه اشتباه نكنيد اين كوئري داده ها رو براساس ip گروه بندي مي كنه و زماني كه چند ip يكسان باشه تنها يكي از اون ها رو مياره
شما امتحان كنيد ببينيد اون چيزي رو كه مي خواين برمي گردونه يا نه؟الان توی دیتابیسم 1 میلیون ردیف دارم.

این کوئری باعث می شه که اسکریپت بدون توقف اجرا بشه.

نکته عجیب اینجا بود که حتی بعد از زمان 30 ثانیه هم اسکریپت اجرا می شد !

بنظرتون چرا این مشکل پیش اومده؟

Reza1607
چهارشنبه 13 مهر 1390, 23:03 عصر
شرمنده ديگه اين يكي رو نمي دونم به نظرم اين سوال رو تو قسمت ديتابيس بپرسيد بهتره و به جواب ميرسين