You should be using INNER JOIN rather than OUTER one.

Daniel


On Fri, Jun 10, 2011 at 8:24 AM, Emanuele Ricci <ste...@gmail.com> wrote:
> Maybe you don't understand. I'll make an example
>
> TABLE POSTS:
>
> POST_ID | POST_TITLE
>
> 1   | My first post
> 2   | My second post! Yay!
>
> TABLE CATEGORIES
>
> CAT_ID  | CATEGORY_TITLE
>
> 1  | General
> 2  | Blog
> 3  | Sport
> 4  | Comic
>
> TABLE POSTS_CATEGORIES
>
> POST_ID | CATEGORY_ID
>
> 1 | 1
> 1 | 2
> 1 | 3
> 2 | 2
> 2 | 4
>
> What does it mean? That "My first post" have 3 categories: General, Blog,
> Sport and "My second post! Yay!" have 2 categories: Sport and Comic
>
> So with this query (where I want to load ALL POST with their categories):
>
> SELECT posts.post_id, posts.post_title, categories.category_name FROM posts
> LEFT OUTER JOIN posts_categories ON posts_categories.post_id=posts.post_id
> LEFT OUTER JOIN categories ON
> posts_categories.category_id=categories.category_id;
>
> I'll get this results:
>
> 1 | My first post | General
> 1 | My first post | Blog
> 1 | My first post | Sport
> 2 | My second post! Yay! | Blog
> 2 | My second post! Yay! | Comic
>
> And I think this is the only efficent way to load all my data using only 1
> query to optimize it.
> But: how can I handle all data in my ListFragment with my own Adapter that
> extend CursorAdapter?
>
> I cannot display all 5 post because as you can see we have repetitions.
>
> On Fri, Jun 10, 2011 at 2:15 AM, Zsolt Vasvari <zvasv...@gmail.com> wrote:
>>
>> Use a WHERE clause so you only get 2 rows returned.
>> On Jun 10, 6:17 am, Emanuele Ricci <ste...@gmail.com> wrote:
>> > Good evening ( for me ), I'm Emanuele a young android developer.
>> > I want to share with you my problem because I'm not finding a good
>> > solution.
>> >
>> > I've 3 tables (in reality 5)
>> >
>> > posts
>> > categories
>> > posts_categories
>> >
>> > to create the many-to-many relation between posts and categories
>> >
>> > I've created a ListFragment to show all my posts with their categories.
>> >
>> > So I've created this query ( I don't write all the code [image: :)] )
>> >
>> > SELECT posts._id, posts.post_title, categories.category_name FROM posts
>> > LEFT
>> > OUTER JOIN posts_categories ON posts_categories.post_id=posts.post_id
>> > LEFT
>> > OUTER JOIN categories ON
>> > posts_categories.category_id=categories.category_id;
>> >
>> > So if I have 2 post with 2 category each that query will return 4
>> > records.
>> > Am I wrong?
>> > So in my Cursor I have 4 record but what I really need is to collect
>> > datas
>> > from the cursor and display only what I really need.
>> >
>> > In this case I cannot use a CursorAdapter to display my data because it
>> > will
>> > insert 4 item in the ListFragment.
>> >
>> > And I don't want to load only post and than for each post load
>> > categories
>> > because if I have 100 posts I will do 1 query to select all posts and
>> > 100
>> > query to select categories.
>> >
>> > What can I do? I need an expert advice! Which is the best way to handle
>> > this
>> > situation?
>> > Have you ever faced this problem?
>> >
>> > Thank you very much. Emanuele Ricci.
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to android-developers@googlegroups.com
>> To unsubscribe from this group, send email to
>> android-developers+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en



-- 
Daniel Drozdzewski

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to