Hi,
I have two tables in a db called "univ". The tables are "student" and
"result_meaning".
Using the C API I want to run a query that SELECT's from "student" using the
field "studnum" as
the selection criteria.
In the "student" table their is a field called "code".
I want to then look up the equivelant "code" in the "result_meaning" table,
so that I can print the field
"dbox" with the results of the SELECT on "student".
ie. Using the data in the tables below, and a student number of "31165222" I
would want to extract the following
fields:
fname
sname
studnum
subject
result
code
dbox (from "result_meaning").
I have looked around for help, and have put together the code at the end of
this email, which does not work. I get a
"out of sequence" error.
Where am I going wrong? Is there a simple way to SELECT data from 2
different tables using C? Help, I'm pretty
stuffed here!
Tables
------
------
student
-------
+-------+----------+----------+---------+--------+------+
| fname | sname | studnum | subject | result | code |
+-------+----------+----------+---------+--------+------+
| Evan | Domski | 31165222 | ENG301 | 80 | P |
| Evan | James | 31165223 | AHS301 | 75 | P |
| Frank | Hardy | 31155111 | CRM301 | 80 | P |
| Joe | Hardy | 31155112 | FOR301 | 80 | P |
| Joe | Hardy | 31155112 | CRM301 | 80 | P |
| Frank | Hardy | 31155111 | FOR301 | 85 | PD |
+-------+----------+----------+---------+--------+------+
result_meaning
--------------
+------+----------------------+------+
| code | meaning | dbox |
+------+----------------------+------+
| P | Pass | 1000 |
| F | Fail | 1001 |
| PD | Pass with Distinctio | 1002 |
+------+----------------------+------+
selecttest.c
------------
------------
#include <stdlib.h>
#include <stdio.h>
#include "mysql.h"
MYSQL my_connection;
MYSQL_RES *res_ptr;
MYSQL_RES *res_ptr_code;
MYSQL_ROW sqlrow;
MYSQL_ROW sqlrow_code;
void display_row();
int main(int argc, char *argv[]) {
int res;
int res_code;
int stud_num;
char query[96]="SELECT * FROM student WHERE studnum=";
char query_code[96]="SELECT * FROM result_meaning WHERE code=";
/* Getting some test data! */
printf("Enter your student number: ");
scanf("%i", &stud_num);
/*-------------------------*/
mysql_init(&my_connection);
/* */
/* "host", "user", "password", "database" */
/* */
if (mysql_real_connect(&my_connection, "localhost", "root", "", "univ", 0,
NULL, 0))
{
printf("Connection success\n");
/* ---------------------------------------------------------------------*/
/* Table <student> access */
sprintf(&query[36], "%d", stud_num);
res = mysql_query(&my_connection, query);
if (res)
{
printf("SELECT error: %s\n", mysql_error(&my_connection));
}
else
{
res_ptr = mysql_use_result(&my_connection);
if (res_ptr)
{
while ((sqlrow = mysql_fetch_row(res_ptr)))
{
/*
---------------------------------------------------------------------*/
/* Table <result_meaning> access
*/
sprintf(&query_code[36], "%d", sqlrow[5]);
res_code = mysql_query(&my_connection, query_code);
if (res_code)
{
printf("SELECT error: %s\n", mysql_error(&my_connection));
}
else
{
res_ptr_code = mysql_use_result(&my_connection);
if (res_ptr_code)
{
while ((sqlrow_code = mysql_fetch_row(res_ptr_code)))
{
printf("Fetched data from
result_meaning...\n");
}
if (mysql_errno(&my_connection))
{
printf("Retrive error: %s\n",
mysql_error(&my_connection));
}
}
mysql_free_result(res_ptr_code);
}
/* End table <result_meaning> access
*/
/*
---------------------------------------------------------------------*/
display_row();
}
if (mysql_errno(&my_connection))
{
printf("Retrieve error: %s\n", mysql_error(&my_connection));
}
}
mysql_free_result(res_ptr);
}
/* open if else */
}
else
{
printf("Connection failed\n");
if (mysql_errno(&my_connection))
{
printf("Connection error %d: %s\n", mysql_errno(&my_connection),
mysql_error(&my_connection));
}
}
/* end open if else */
return EXIT_SUCCESS;
} /* main */
void display_row()
{
printf("Names: %s\n", sqlrow[0]);
printf("Surname: %s\n", sqlrow[1]);
printf("Student Number: %s\n", sqlrow[2]);
printf("Subject: %s\n", sqlrow[3]);
printf("Result: %s\n", sqlrow[4]);
printf("Result Dbox: %s\n", sqlrow_code[2]);
printf("Code: %s\n", sqlrow[5]);
}
Regards,
Evan
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php