ERLEDIGT
NEIN
NEIN
ANTWORTEN
9
9
ZUGRIFFE
756
756
EMPFEHLEN
-
Hallo,
ich habe folgendes Problem, bzw. ich finde keinen funktionierenden Weg.
Die Datenbank ist folgendermaßen aufgebaut:
--
-- Tabellenstruktur für Tabelle `products`
--
CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`service_a` int(1) NOT NULL,
`service_b` int(1) NOT NULL,
`service_c` int(1) NOT NULL,
`service_d` int(1) NOT NULL,
`service_e` int(1) NOT NULL,
`service_f` int(1) NOT NULL,
`service_g` int(1) NOT NULL,
`service_h` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
--
-- Tabellenstruktur für Tabelle `usettings`
--
CREATE TABLE IF NOT EXISTS `usettings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`service_a1` int(1) NOT NULL DEFAULT '1',
`service_a2` int(1) NOT NULL DEFAULT '1',
`service_b1` int(1) NOT NULL DEFAULT '1',
`service_b2` int(1) NOT NULL DEFAULT '1',
`service_c1` int(1) NOT NULL DEFAULT '1',
`service_c2` int(1) NOT NULL DEFAULT '1',
`service_d1` int(1) NOT NULL DEFAULT '1',
`service_d2` int(1) NOT NULL DEFAULT '1',
`service_e1` int(1) NOT NULL DEFAULT '1',
`service_e2` int(1) NOT NULL DEFAULT '1',
`service_f1` int(1) NOT NULL DEFAULT '1',
`service_f2` int(1) NOT NULL DEFAULT '1',
`service_g1` int(1) NOT NULL DEFAULT '1',
`service_g2` int(1) NOT NULL DEFAULT '1',
`service_h1` int(1) NOT NULL DEFAULT '1',
`service_h2` int(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ich möchte eine SQL-Abfrage machen, welche mir nur die Boolesche Werte (Standard sind die Bits vom usettings true) "zeilenweise" die mySQL Daten in Tabelle products anzeigt.Geändert von jomafi (18.02.11 um 23:10 Uhr)
-
Was willst du genau angezeigt haben? Mach mal ein kleines Datenbeispiel, dann versteh ev auch ich alter DB-Bastler was du haben willst
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Guten Morgen,
Erst mal danke für die Antwort!
Hier gibt es schon mal eine umfangreiche Demo: http://newspulse.cnn.com/
-
Und was hat diese CNN-Seite mit deinen Tabellen zu tun?
Ich gebs auf - ich will ja eigentlich helfen, doch zum Rätsel raten habe ich keine Lust.---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
@yaslaw Bitte nicht ärgern, sonst werden aus einer Falte zwei?
ich weiß nicht wonach ich suchen soll, weil ich mein Problem nicht so einfach beschreiben kann
ich möchte mir gerne aus einer Datenbank alle Werte ausgeben lassen, deren Status 1 gesetzt wurde.Geändert von jomafi (19.02.11 um 11:15 Uhr)
-
19.02.11 12:26 #6
- Registriert seit
- Aug 2006
- Beiträge
- 204
Versuche es doch mal mit dem Select-Befehl und der Where Bedingung.
-
Aber ich seh bei deinen Tabellen kein Feld Status. Haben deine 2 Tabellen irgend ein Zusammenhang? Wenn ja, welchen?Code sql:
1
SELECT * FROM TABLE WHERE STATUS=1
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Danke das du auf meine Frage geantwortet hast
Meine SQL-Abfrage sieht so aus:
Irgendwie scheint das nicht zu funktionierenPHP-Code:public function getProducts($uname)
{
global $db;
$today = date("Y/n/j", time());
$current_month = date("n", $this->time);
$current_year = date("Y", $this->time);
$current_month_text = date("F Y", $this->time);
$total_days_of_current_month = date("t", $this->time);
$order = "id DESC";
$sql = "SELECT DISTINCT p.*, b.*, u.*, DATE_FORMAT(p.date, '%d.%m.%Y') as created,"
. "\n DATE_FORMAT(date_start,'".$this->short_date."') AS sdate,"
. "\n DATE_FORMAT(time_start,'%H:%i') AS stime,"
. "\n DATE_FORMAT(date_end,'".$this->short_date."') AS edate,"
. "\n DATE_FORMAT(time_end,'%H:%i') AS etime"
. "\n FROM products AS p"
. "\n LEFT JOIN payments AS b ON p.id = b.product_id"
. "\n LEFT JOIN usersettings AS u ON u.uid = '".$uname."'"
. "\n WHERE date_start BETWEEN '$current_year/$current_month/01'"
. " \n AND '$current_year/$current_month/$total_days_of_current_month'"
. "\n AND p.approved= 'yes'"
. "\n AND p.active = '1'"
. "\n AND b.status = '1'"
. "\n AND u.budget_a = '1'"
. "\n AND u.budget_b = '1'"
. "\n AND u.budget_c = '1'"
. "\n AND u.budget_d = '1'"
. "\n AND u.budget_d = '1'"
. "\n AND u.budget_f = '1'"
. "\n AND u.budget_g = '1'"
. "\n AND u.budget_h = '1'"
. "\n AND u.gebiet_a = '1'"
. "\n AND u.gebiet_b = '1'"
. "\n AND u.gebiet_c = '1'"
. "\n AND u.gebiet_d = '1'"
. "\n AND u.gebiet_e = '1'"
. "\n AND u.gebiet_f = '1'"
. "\n AND u.gebiet_g = '1'"
. "\n AND u.gebiet_h = '1'"
. "\n AND u.gebiet_i = '1'"
. "\n AND u.gebiet_j = '1'"
. "\n AND u.gebiet_k = '1'"
. "\n AND u.gebiet_l = '1'"
. "\n AND u.gebiet_m = '1'"
. "\n AND u.gebiet_n = '1'"
. "\n AND u.gebiet_o = '1'"
. "\n AND u.gebiet_p = '1'"
. "\n AND u.service_a = '1'"
. "\n AND u.service_b = '1'"
. "\n AND u.service_c = '1'"
. "\n AND u.service_d = '1'"
. "\n AND u.service_e = '1'"
. "\n AND u.service_f = '1'"
. "\n AND u.service_g = '1'"
. "\n AND u.service_h = '1'"
. "\n AND u.service_i = '1'"
. "\n AND u.service_j = '1'"
. "\n AND u.service_k = '1'"
. "\n AND u.service_l = '1'"
. "\n AND u.service_n = '1'"
. "\n AND u.service_m = '1'"
. "\n AND u.service_o = '1'"
. "\n AND u.service_p = '1'"
. "\n AND u.service_q = '1'"
. "\n AND u.service_r = '1'"
. "\n AND u.service_s = '1'"
. "\n AND u.service_t = '1'"
. "\n AND u.service_u = '1'"
. "\n AND u.service_v = '1'"
. "\n AND u.service_w = '1'"
. "\n AND u.service_y = '1'"
. "\n AND u.service_z = '1'"
. "\n AND u.service_aa = '1'"
. "\n AND u.service_bb = '1'"
. "\n AND u.service_cc = '1'"
. "\n AND u.service_dd = '1'"
. "\n AND u.service_ee = '1'"
. "\n AND u.service_ff = '1'"
. "\n AND u.service_gg = '1'"
. "\n AND u.service_hh = '1'"
. "\n AND u.service_ii = '1'"
. "\n AND u.service_jj = '1'"
. "\n AND u.service_kk = '1'"
. "\n AND u.service_ll = '1'"
. "\n AND u.service_nn = '1'"
. "\n AND u.service_mm = '1'"
. "\n AND u.service_oo = '1'"
. "\n AND u.service_pp = '1'"
. "\n AND u.service_qq = '1'"
. "\n AND u.service_rr = '1'"
. "\n AND u.service_ss = '1'"
. "\n AND u.service_tt = '1'"
. "\n AND u.service_uu = '1'"
. "\n AND u.service_vv = '1'"
. "\n AND u.service_ww = '1'"
. "\n AND u.service_yy = '1'"
. "\n AND u.service_zz = '1'"
. "\n AND u.service_aaa = '1'"
. "\n AND u.service_bbb = '1'"
. "\n AND u.service_ccc = '1'"
. "\n AND u.service_ddd = '1'"
. "\n AND u.service_eee = '1'"
. "\n AND u.service_fff = '1'"
. "\n AND u.service_ggg = '1'"
. "\n AND u.service_hhh = '1'"
. "\n AND u.service_iii = '1'"
. "\n AND u.service_jjj = '1'"
. "\n AND u.service_kkk = '1'"
. "\n AND u.service_lll = '1'"
. "\n AND u.service_nnn = '1'"
. "\n AND u.service_mmm = '1'"
. "\n AND u.service_ooo = '1'"
. "\n AND u.service_ppp = '1'"
. "\n AND u.service_qqq = '1'"
. "\n ORDER BY " . $order;
$row = $db->fetch_all($sql);
return $row;
}
Geändert von jomafi (19.02.11 um 21:51 Uhr)
-
Schön, ein SQL dass alle Felder auf 1 prüft. Wenn ich verstehen würde was du haben willst, würde ich ev. sehen was da falsch ist.
Was ich auf die schnelle sehe, ist dass du die Tabelle usersettings nirgens mit products oder payments verknüft hast.
Nebenbei vergleichst du deine Felder die als int abgelegt sind mit einem String. nimm die ' bei den Staties weg, denn wu willst ein Zahlenvergleich.
Zudem hat u.uid = '.$uname.' nix im JOIN-Bereich verloren. Das ist eine WHERE-Bedinung.
Also ich fasse mal zusammen was du da hast.
Du verknüpst products mit payments. Dieses kombinierst du lose mit den usersettings des users sofern in den settings alle Staties auf 1 sind.
------ ich glaub, langsam versteh ich halbwegs was du suchst.
Der user hat eine Setting-Tabelle in die viele Statis mit 0 oder 1 eingetragen sind. Nun suchst du alle Produkte die diesem Schlüssel entsprechen.
Annahme meinerseits: Settingfelder die auf 0 sind, bedeuten nicht, dass dass das Produkt dort auch auf 0 sein muss. Aber wenn das Setting auf 1 ist, dann muss das Produkt dort ach eine 1 haben.
Also das Lochkarten-System. Wo in der Setting-Karte ein Loch ist, muss im Produkt ebenfalls ein Loch sein.
Code sql:1 2 3 4 5 6 7 8 9 10 11 12
SELECT p.* FROM products AS p, usersettings AS u WHERE u.uid = '{$uname}' --Mit dem Vergleich 'Grösser als' erreiche ich ,dass wenn u.service_a 0 ist, es egal ist --ob p.service_a 0 oder 1 ist. Wenn aber u.service_a eine 1 ist, dann muss p.service_a --ebenfalls eine 1 sein AND p.service_a >= u.service_a AND p.service_b >= u.service_b
---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
Das hast du echt schön ausgedrückt, genau so ist es gemeint
Der user hat eine Setting-Tabelle mit 70 SQL Strings (anpassbare Statis mit 0 oder 1) und die Products-Tabelle hat 7 SQL Strings (a, b, c, d, e, f und g)
muß ich die Usersettings-Tabelle, mit allen Spalte der Products-Tabelle a, b, c, d, e, f und g vergleichen.
Gibt es eine einfache Methode, wie Array in SQL? (Array nach gleichen Werten durchsuchen)Geändert von jomafi (20.02.11 um 14:25 Uhr)
Ähnliche Themen
-
boolesche Matrixmultiplikation
Von ignos im Forum Java GrundlagenAntworten: 1Letzter Beitrag: 03.12.09, 12:49 -
Boolesche Option
Von derbumann im Forum 3D Studio MaxAntworten: 4Letzter Beitrag: 04.08.09, 10:12 -
Java: MySQL Time Werte mit Werte vergleichen
Von Genius2 im Forum JavaAntworten: 6Letzter Beitrag: 10.06.09, 14:27 -
Mysql - Werte hinzufügen
Von Zero2000 im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 12.07.07, 15:32 -
mysql werte
Von brenner26 im Forum PHPAntworten: 1Letzter Beitrag: 20.07.02, 10:03





Zitieren


Login





