آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

فراخوانی ستون های چند table با هم

حامد  12 سال پیش  12 سال پیش
+3 0

من یه کلاس درست کردم به اسم علاقه مندی که میخوام آیتم هایی که به علاقه مندی اضافه شد (در تمام table ها - 5 تا table دارم ) را در این کلاس نشون بدم
باید چطور این کار را بکنم؟
تو هر table یه ستون با نام favorite ساختم که با کلیک روی چک باکس هر آیتم لیست مقدارش به yes تبدیل میشه
میشه اینطور نوشت؟ چند تا تیبل را با هم فراخونی کرد؟

Cursor cursor = mydb.rawQuery("select rowid from table1,table2,table3,table4 where favorite = 'yes'" , null);
 
یا اینکه باید از دستور GROUP BY استفاده کرد:
لینک زیر را ببینید:
0 0
جالبه ! ، 10 دقیقه نمیشه اینجا پاسخ دادم ! لینک (12 سال پیش)
+1 0
alu جان فک نکنم به پست شما مربوط بشه اونجا بحث 1 جدوله اینجا قراره جند تا جدول رو به هم پیوند بدن اساسی! (12 سال پیش)
0 0
آخرین پاسخ بنده رو مطالعه کردید ؟! ، ترکیب n جدول هست (12 سال پیش)
0 0
درسته میتونی از پاسخ alu جان استفاده کنی ! (12 سال پیش)
0 0
داشتم کتاب دیتابیس را میخوندم حواسم نبود .. مرصی alu جان (12 سال پیش)
0 0
خواهش میکنم ، موفق باشی (12 سال پیش)
 برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+3 0

زمانی میتونی اطلاعات رو مثل لینک استک که دادی واکشی کنی که جداولت با هم ریلیشن داشته باشن و بر اساس اون ریلیشن جوین بنویسی.

وقتی جداول به هم مرتبط نیستن و فقط نام فیلد یکسانه با چهار کوئری دیتا رو بخون و union شده دیتا رو استفاده کن

0 0
من خودم همیشه ارتباط ها رو برقرار میکنم ، اما خوب برای ارتباط 2 3 تا جدول ، همون کوئری هم جواب میده ! (12 سال پیش)
+1 0
یعنی الان کوئری hamedjj جواب میده یا کوئری آخر سوال شما؟ شما جوین نوشتی ولی ایشون نه (12 سال پیش)
0 0
بزارین امتحان کنم ببینم چی میشه .. تو کتاب ذیتابیس که میخودم میگفت از INNER JOIN استفاده کن (12 سال پیش)
+1 0
دیتای جداول شما به هم وابسته هستش؟ (12 سال پیش)
0 0
نه وابسته نیست ... فقط مقادیر ستون favorite در هر دو جدول که برابر yes هست را میخوام که چند ستون را نشون بدم ... منظورت از وابستگی اینه که مثلا اسم طرف تو یه جدول باشه شماره طرف تو یه جدول دیگه بعد این دو را با هم join کنی ... همینه دیگه ؟ (12 سال پیش)
+1 0
وابستگی دقیقا میشه مثالی که alu تو پستش زده. رابطه بین tag و جدول واسط (12 سال پیش)
0 0
من فقط مقادیر yes از هر جدول در ستون favorite میخوام که اگر بود ستون name همون جدول را در لیست نشون بده همین ... اصلا نمیخوام جداول را ربطی به هم بدم (12 سال پیش)
+1 0
جواب 5 کوئری جدا رو باید unionکنی (12 سال پیش)
0 0
بازم نظر من همون سبک کوئری خودمه ! (12 سال پیش)
+1 0
میشه بدون وابستگی کوئری شما رو نوشت؟ این شرط WHERE Table1.Column1==Table2.Column1 [AND OR ... other Conditions] باید باشه دیگه. درسته؟ (12 سال پیش)
0 0
جداول نیاز به ارتباط نرم افزاری ندارند ، اما از نظر منطقی باید مرتبط باشن، اما خوب یک یا چند شرط میتونه کامل ترش کنه (12 سال پیش)
0 0
درسته، منطقیه (12 سال پیش)
0 0
اون union مطمئنی درسته؟ عملگر UNION به صورت پیش فرض فقط مقادیر متمایز را انتخاب می کنه (12 سال پیش)
+1 0
لینک (12 سال پیش)
0 0
تست کن دیگه ! ، راحت ترین حالت ارتباطه ! ، ولی بازم Relation ها رو برقرار کنی بهتره ! (12 سال پیش)
0 0
اتفاقا چند دقیقه پیش اون لینک را خوندم (12 سال پیش)
+1 0
alu یه سوال، کوئری بدون شرط favorite رو بحثی ندارم، ولی با فیلتر favorite نتونستم بنویسم (12 سال پیش)
+1 0
اگه خوندی که مورد آخرش دقیقا همونیه که میخوای (12 سال پیش)
0 0
بستگی به ساختار DB داره ، اگه خواستید یه اکسپورت بگیرید ، من چند مدل کوئری بهتون بدم (12 سال پیش)
0 0
محمد حسین زاده درست بود ... من آخری را ندیدم (12 سال پیش)
0 0
alu جان در مورد گرامر شما من تعداد سطرهای جداولم یکی نیست ... به همین خاطر تکراری میندازه .. درسته یا اشتباه کردم؟؟ (12 سال پیش)
+1 0
دلیل رکورد های تکراری نبودن وابستگیه. اگر فیلدی رو به عنوان fk داشتید درست جواب میداد (میشد همون Join) (12 سال پیش)
0 0
UNION ALL همراه با WHERE دقیقا اونایی را را برابر با yes هست را پشت سر هم به ترتیبی که میخوای قرار میده و کاملا اوکیه (12 سال پیش)
0 0
قربون هر دوتاتون برم که برام وقت گذاشتید ... فدایی دارین (12 سال پیش)
0 0
همون طور که آقای حسین زاده گفتن ، علت تکراری بودن ، نبودن وابستگیه ، اما اگه بخواین بدون ارتباط بین جداول سطر های تکراری را حذف کنید ، کافیه یک شرط مثل Table1.id=table2.id به کوئری اضافه کنید ، بعد با Group by table1.id اجازه ندید مقدار تکراری ایجاد بشه :) ، فدات (12 سال پیش)
پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+7 0

یه مثال :

اسکریپت :

 -- phpMyAdmin SQL Dump
-- version 4.1.8
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jun 02, 2014 at 02:03 AM
-- Server version: 5.6.16
-- PHP Version: 5.5.9

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `testsql`
--

-- --------------------------------------------------------

--
-- Table structure for table `table1`
--

CREATE TABLE IF NOT EXISTS `table1` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(1000) NOT NULL,
`Favorite` tinyint(1) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;

--
-- Dumping data for table `table1`
--

INSERT INTO `table1` (`Id`, `Name`, `Favorite`) VALUES
(1, 'Name 1', 1),
(2, 'Name 1', 1),
(3, 'Name 1', 1),
(4, 'Name 1', 1),
(5, 'Name 1', 1),
(6, 'Name 1', 1),
(7, 'Name 1', 1),
(8, 'Name 1', 1),
(9, 'Name 1', 1),
(10, 'Name 1', 1),
(11, 'Name 1', 1),
(12, 'Name 1', 1),
(13, 'Name 1', 1),
(14, 'Name 1', 1),
(15, 'Name 2', 1),
(16, 'Name 3', 0),
(17, 'Name 2', 1),
(18, 'Name 3', 0);

-- --------------------------------------------------------

--
-- Table structure for table `table2`
--

CREATE TABLE IF NOT EXISTS `table2` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(1000) NOT NULL,
`Favorite` tinyint(1) NOT NULL,
PRIMARY KEY (`Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `table2`
--

INSERT INTO `table2` (`Id`, `Name`, `Favorite`) VALUES
(1, 'Name 4', 1),
(2, 'Name 5', 0),
(3, 'Name 6', 1),
(4, 'Name 7', 0);

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

2 نوع کوئری بحث شده

 select table1.name,table2.name from table1,table2 where table1.favorite=1 and table2.favorite=1 

select table1.name from table1 where table1.favorite=1 union select table2.name from table2 where table2.favorite=1
0 0
کاملا درسته ... مرسی (12 سال پیش)
پاسخ به سوال 
حامد  12 سال پیش
+5 0

مرصی از همه باید از UNION ALL همراه با WHERE استفاده میشد

SELECT rowid FROM table1
WHERE favorite='yes'
UNION ALL
SELECT rowid FROM table2
WHERE favorite='yes'

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .