بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
فراخوانی ستون های چند table با هم
من یه کلاس درست کردم به اسم علاقه مندی که میخوام آیتم هایی که به علاقه مندی اضافه شد (در تمام 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 شده دیتا رو استفاده کن
پاسخ به سوال
محمد حسین زاده
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
پاسخ به سوال
حامد
12 سال پیش
+5
0
مرصی از همه باید از UNION ALL همراه با WHERE استفاده میشد
SELECT rowid FROM table1 WHERE favorite='yes' UNION ALL SELECT rowid FROM table2 WHERE favorite='yes'
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .