Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Databases

SQL Concatenation Question

I'm having a bit of trouble figuring out the SQL command to retrieve the following information...

"In the library database there's a patrons table listing all the users of the library. The columns are id, first_name, last_name, address, email, library_id and zip_code.

Generate a list of strings that are in the following format: Andrew Chalkley andrew@teamtreehouse.com. Concatenate the first name, last name and email address for all users.

Alias it to to_field. This will be used in the "To" field in email marketing."

I've tried a few things, but keep getting a syntax error. My best guess is...

> SELECT first_name || " " || last_name AS "Name", || " <" || email || ">" AS "To" FROM patrons;

1 Answer

Steven Parker
Steven Parker
231,269 Points

You're really close, but you have two combined fields when the instructions ask for only one. And you can't start a field with the concatenation operator but you can use it to combine the parts back into one field when you remove that first alias and the comma.

And you can disregard that sentence about how it result will be used for marketing. The important instruction regarding the correct alias was "Alias it to to_field".

I corrected the "To" vs. "to_field" problem. I was unclear which was being asked for. I also removed the alias regarding "Name" which, you're correct, wasn't called for.

I still don't understand how to concatenate a character before a field as is being asked with regards to the '< >' characters around the email address. Still getting syntax errors. I tried a few different things, most recently...

> SELECT first_name || " " || last_name email AS "<" || email || ">" AS "to_field";

Do I need to use a function to achieve this? The examples I see on stackoverflow.com suggest using the substr() and in some cases the CONCAT() function.

I tried...

> SELECT first_name || " " || last_name, email SUBSTR("<" || email || ">") AS "to_field" FROM patrons;

...and also got a syntax error.

UPDATE:

Finally guessed it. Seems I was overthinking it a bit. Thanks for your help, Steven.

> SELECT first_name || " " || last_name || " " || "<" || email || ">" AS "to_field" FROM patrons;
Steven Parker
Steven Parker
231,269 Points

Glad to help — happy coding!