Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL allgemein] join bauen
mukraker 02-12-2003, 20:20 <?php
$sql = "SELECT
*
FROM
".$prefix."_worksheet
WHERE
YEAR(date)=".$this->intyear." AND
MONTH(date)=".$this->intmonth." AND
DAYOFMONTH(date)=".$intday." AND
eid = ".$_REQUEST['cuser']."";
$worksheetquery = $DBase->query($sql);
while ($row = mysql_fetch_object($worksheetquery)){
$projektquery = $DBase->query("SELECT
*
FROM
".$prefix."_projekt
WHERE
status = '1' AND
pid = '".$row->pid."'");
$prow = mysql_fetch_object($projektquery);
$typquery = $DBase->query("SELECT
name
FROM
".$prefix."_type
WHERE
tid='".$row->tid."'");
$trow = mysql_fetch_object($typquery);
}
?>
hab schon zich mal versucht da ein query raus zu bauen um ladezeiten zu sparen ohne erfolg.
würde mich um eure hilfe freuen. Kann auch gern ein "PEAR" query sein
dann gib mal deine tabellen-struturen an. und wie sie verbunden sein soll(t)en.
mukraker 02-12-2003, 20:30 Datenbank job auf localhost
# phpMyAdmin MySQL-Dump
# version 2.5.1
# http://www.phpmyadmin.net/ (download page)
#
# Host: localhost
# Erstellungszeit: 02. Dezember 2003 um 20:28
# Server Version: 4.0.14
# PHP-Version: 4.3.3
# Datenbank: `job`
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `wn_client`
#
# Erzeugt am: 03. Oktober 2003 um 14:00
# Aktualisiert am: 02. Dezember 2003 um 13:59
#
CREATE TABLE `wn_client` (
`cid` int(10) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`partner` varchar(255) NOT NULL default '',
`street` varchar(255) NOT NULL default '',
`date` int(12) NOT NULL default '0',
`nr` varchar(255) NOT NULL default '',
`town` varchar(255) NOT NULL default '',
`plz` varchar(255) NOT NULL default '',
`telefon` varchar(255) NOT NULL default '',
`fax` varchar(255) NOT NULL default '',
`isdn` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`info` text NOT NULL,
PRIMARY KEY (`cid`)
) TYPE=MyISAM AUTO_INCREMENT=67 ;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `wn_day`
#
# Erzeugt am: 03. Oktober 2003 um 14:00
# Aktualisiert am: 02. Dezember 2003 um 17:49
#
CREATE TABLE `wn_day` (
`id` int(10) unsigned NOT NULL auto_increment,
`eid` int(10) NOT NULL default '0',
`start` varchar(5) NOT NULL default '0',
`end` varchar(5) NOT NULL default '0',
`break` varchar(5) NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=145 ;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `wn_employee`
#
# Erzeugt am: 03. Oktober 2003 um 14:00
# Aktualisiert am: 25. November 2003 um 17:33
#
CREATE TABLE `wn_employee` (
`eid` bigint(100) NOT NULL auto_increment,
`name` varchar(100) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`passwort` varchar(50) NOT NULL default '',
`avatar` text NOT NULL,
`icq` varchar(9) NOT NULL default '',
`aim` varchar(100) NOT NULL default '',
`yahoo` varchar(100) NOT NULL default '',
`website` varchar(100) NOT NULL default '',
`signatur` text NOT NULL,
`sperren` char(1) NOT NULL default '0',
`newsletter` char(1) NOT NULL default '0',
`foto` text NOT NULL,
`hobbies` text NOT NULL,
`herkunft` text NOT NULL,
`geburtstag` varchar(10) NOT NULL default '',
`geschlecht` char(1) NOT NULL default '0',
`usergroup` char(1) NOT NULL default '',
`news` char(1) NOT NULL default '1',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`eid`,`eid`)
) TYPE=MyISAM AUTO_INCREMENT=11 ;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `wn_pn`
#
# Erzeugt am: 03. Oktober 2003 um 14:00
# Aktualisiert am: 13. November 2003 um 17:03
#
CREATE TABLE `wn_pn` (
`pnid` bigint(255) NOT NULL auto_increment,
`pnfrom` varchar(100) NOT NULL default '',
`touser` varchar(100) NOT NULL default '',
`pntopic` varchar(100) NOT NULL default '',
`pntext` text NOT NULL,
`pnread` char(1) NOT NULL default '1',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`pnid`)
) TYPE=MyISAM AUTO_INCREMENT=9 ;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `wn_projekt`
#
# Erzeugt am: 03. Oktober 2003 um 14:00
# Aktualisiert am: 02. Dezember 2003 um 16:49
#
CREATE TABLE `wn_projekt` (
`pid` int(10) unsigned NOT NULL auto_increment,
`cid` int(10) NOT NULL default '0',
`name` varchar(255) NOT NULL default '',
`status` int(1) NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
`dateend` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`pid`)
) TYPE=MyISAM AUTO_INCREMENT=133 ;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `wn_type`
#
# Erzeugt am: 30. September 2003 um 18:13
# Aktualisiert am: 22. Oktober 2003 um 13:48
#
CREATE TABLE `wn_type` (
`tid` int(12) unsigned NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
PRIMARY KEY (`tid`)
) TYPE=MyISAM AUTO_INCREMENT=15 ;
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `wn_worksheet`
#
# Erzeugt am: 03. Oktober 2003 um 14:00
# Aktualisiert am: 02. Dezember 2003 um 16:57
#
CREATE TABLE `wn_worksheet` (
`wid` int(10) unsigned NOT NULL auto_increment,
`eid` int(10) NOT NULL default '0',
`pid` int(10) NOT NULL default '0',
`tid` int(10) NOT NULL default '0',
`duration` varchar(5) NOT NULL default '0',
`info` text NOT NULL,
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`wid`)
) TYPE=MyISAM AUTO_INCREMENT=456 ;
ich möchte folgendes auflisten
---------------------------------------
projekt+zugehöriger kunde
tätigkeit(typ)
duration
info
Original geschrieben von mukraker
ich möchte folgendes auflisten
---------------------------------------
projekt+zugehöriger kunde
tätigkeit(typ)
duration soll ich jetzt raten, welche tabellen benötigt werden und über welche felder die verbunden sind? :goth:
das wäre für mich im ersten moment etwas unübersichtlich... :p
sags mir einfach mal.
schon gut. teset das mal.SELECT
*
FROM
wn_worksheet W
INNER JOIN wn_employee E ON E.eid = W.wid
INNER JOIN wn_projekt P ON P.eid = W.wid
INNER JOIN wn_type T ON T.eid = W.wid
mukraker 02-12-2003, 21:07 mhm
fehlt noch irgendwie nen WHERE und die KUNDE zum Projekt
SELECT
*
FROM
wn_worksheet W
INNER JOIN wn_employee E ON E.eid = W.wid
INNER JOIN wn_projekt P ON P.eid = W.wid
INNER JOIN wn_type T ON T.eid = W.wid
WHERE
YEAR(date)=2003 AND
MONTH(date)=12 AND
DAYOFMONTH(date)=2 AND
eid = 7;
aber fehler:
Column: 'date' in where clause is ambiguous
Was ich hinterher über ne while ausgeben möchte:
-projekt+kunde, typ des worksheets,
-typ des worksheets
-duration des worksheets
-info des worksheets
naja,
Column: 'date' in where clause is ambiguous
laut aussagen der english-professorin hier im zimmer heißt ambigious 'zweideutig'. es muß w.date heißen, oder?
mukraker 02-12-2003, 21:17 SELECT
*
FROM
wn_worksheet W
INNER JOIN wn_employee E ON E.eid = W.wid
INNER JOIN wn_projekt P ON P.eid = W.wid
INNER JOIN wn_type T ON T.eid = W.wid
WHERE
W.YEAR(date)=2003 AND
W.MONTH(date)=12 AND
W.DAYOFMONTH(date)=2 AND
W.eid = 7;
so hatte ich es erst, macht auch mehr sin doch kamm dan gleich =
You have an error in your SQL syntax.
mrhappiness 02-12-2003, 21:19 ohne semikolon
mukraker 02-12-2003, 21:21 am semikolon liegt sicher nicht
-------------------
Fehler
SQL-Befehl :
SELECT *
FROM wn_worksheet W
INNER JOIN wn_employee E ON E.eid = W.wid
INNER JOIN wn_projekt P ON P.eid = W.wid
INNER JOIN wn_type T ON T.eid = W.wid
WHERE W.YEAR(
date
) = 2003 AND W.MONTH(
date
) = 12 AND W.DAYOFMONTH(
date
) = 2 AND W.eid = 7
LIMIT 0 , 30
MySQL meldet:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '( date ) = 2003 AND W.MONTH( date ) = 12 AND W.DAYOFMONTH( date
Zurück
ähm,
muß das w wirklich draußen stehn und nicht vor dem date?
also w.date?
mukraker 02-12-2003, 21:32 ahh
SQL-Befehl :
SELECT *
FROM wn_worksheet W
INNER JOIN wn_employee E ON E.eid = W.wid
INNER JOIN wn_projekt P ON P.pid = W.pid
INNER JOIN wn_client C ON C.cid = P.cid
INNER JOIN wn_type T ON T.tid = W.tid
WHERE YEAR( W.date ) = 2003 AND MONTH( W.date ) = 12 AND DAYOFMONTH( W.date ) = 2 AND W.eid = 7
schonmal kein fehler mehr
[code]-tags by Abraxax
naja,
in der tabelle gibts auch keine spalte dieses namens.
sollte cid heißen ....
edit: dann nehm ich das 'fauler sack' wieder raus, hast ja selbst die lösung gefunden ....
Original geschrieben von mukraker
mhm
fehlt noch irgendwie nen WHERE und die KUNDE zum Projektich sage nur eigeninitiative... :D
eigentlich solltest du nur testen, ob eine ausgabe kommt, da ich mal die tabellen-verbindungen geraten habe, weil du so lange zum posten brauchst .... :p
auch ist es nicht gut, 'date' als feldnamen zu verwenden. 'date' ist ein reserviertes wort.
auch mache bitte demnächst wieder code-tags um deine queries. ausserdem solltest du sie auch mal richtig formatieren. ein beispiel hast du ja bei mir.
mukraker 03-12-2003, 12:15 <?php
$sql= "SELECT
W.info, W.duration,
T.name,
P.name as pname,
C.name as cname,
E.name as ename
FROM
".$prefix."_worksheet W
LEFT JOIN ".$prefix."_employee E
ON E.eid = W.eid
LEFT JOIN ".$prefix."_projekt P
ON P.pid = W.pid
LEFT JOIN ".$prefix."_client C
ON C.cid = P.cid
LEFT JOIN ".$prefix."_type T
ON T.tid = W.tid
WHERE
YEAR( W.date ) = ".$this->intyear." AND
MONTH( W.date ) = ".$this->intmonth." AND
DAYOFMONTH( W.date ) = ".$this->intday."
AND W.eid = '".$this->userid."'";
?>
für die es interessiert , so gehts!"
|
|