Dan maakt het idd weinig uit, maar dat schreef Slacker ook al. Hij heeft het dan over hashes, maar da's gewoon hetzelfde.quote:Op donderdag 6 november 2008 23:27 schreef ursel het volgende:
Ik begrijp dus eigenlijk dat het niet mogelijk is om een kolom te excluden??
@slacker, Maar als je nou een associative array fetched?? Dan maakt dit toch ook niet uit? Of zie ik iets over het hoofd?
quote:Nu kan je natuurlijk ook de zooi dmv een hash terugkrijgen, waardoor het niet echt veel uitmaakt, maar dit is wel degelijk van belang bij een sequentiele array.
Ik snap je nu. Maar ik ging er eigenlijk ook vanuit dat iedereen die "SELECT *" doet alsnog gebruik maakt van een named/associatieve array, object, whatever, en $result['val'] gebruikt bijvoorbeeld. Ik vind het uitermate ranzig om in welke situatie dan ook maar klakkeloos uit te gaan van een volgorde, los van of je * gebruik of kolomnamen.quote:Op donderdag 6 november 2008 22:55 schreef slacker_nl het volgende:
Je begrijpt me verkeerd, stel... iemand dumpt de database, maakt wijzigingen in de dump, dropped de originele table en creeert opnieuw de table, alleen zijn val en val2 van volgorde gewijzigd. Bij select * is de volgorde van val en val2 dus anders dan jij in eerste instantie verwacht.. Als je select val, val2 gebruikt veranderd er niks, en heb je dus ook geen problemen met deze wijziging..
1 2 3 4 5 | SELECT reg.id, reg.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total FROM reg_reg reg LEFT JOIN reg_branche branche ON reg.branche_code ON branche.code ?> |
1 2 3 4 5 | SELECT reg.id, reg.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total FROM reg_reg reg LEFT JOIN reg_branche branche ON reg.branche_code LIKE '%,'branche.code',%' ?> |
1 2 3 4 5 6 | SELECT reg.id, reg.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total FROM reg_reg reg, reg_branche branche WHERE reg.branche_code LIKE '%,'branche.code',%' ?> |
1 2 3 4 5 6 | SELECT reg.id, reg.branche_code AS branche_code, branche.name AS branche_name, branche.total_in AS total FROM reg_reg reg, reg_branche branche WHERE (reg.branche_code LIKE '%,'branche.code',%' OR reg.branche_code IS NULL) ?> |
Wat staat er in dat veld?quote:Op maandag 10 november 2008 19:41 schreef Likkende_Lassie het volgende:
Het moet namelijk een like zijn met een veld van de tabel
Onzinquote:Op maandag 10 november 2008 19:23 schreef JortK het volgende:
Die LIKE moet in je WHERE clause, je JOIN clause is om tabellen aan elkaar te koppelen, niet om criteria in aan te leggen
Ook onzin, maar dan met niet werkende voorbeelden.quote:Op maandag 10 november 2008 19:48 schreef Arjan321 het volgende:
JOINS zijn alleen maar syntax sugar, dus iets als dit zou ook moeten werken:
Voor een INNER JOIN:
[ code verwijderd ]
Of een LEFT JOIN
[ code verwijderd ]
1 2 3 | FROM reg_reg r LEFT JOIN reg_branche b ON r.branche_code LIKE Concat('%', b.code, '%') |
In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,quote:Op maandag 10 november 2008 20:33 schreef Light het volgende:
[..]
Wat staat er in dat veld?
Over het algemeen moet je LIKE met "%text%" zien te vermijden. Door de % vooraan kan er namelijk geen gebruik gemaakt worden van indexen, dus is je query per definitie inefficient.
1 2 3 4 5 | FROM register_register register LEFT JOIN register_branches branche ON branche.code = LIKE Concat('%', register.branche_code, '%') WHERE register.id IN (".$sphinx['result']." 0) AND total_in > 0 AND branche.in_small_overview > 0 GROUP BY `branche_code` ORDER BY total_in DESC LIMIT 10") |
Daar was ik al bang voor. Een koppeltabel is dan een veel betere oplossing. Gewoon een tabel met id's, kun je ook indexen op zetten. Is ook veel sneller met doorzoeken.quote:Op maandag 10 november 2008 20:44 schreef Likkende_Lassie het volgende:
[..]
In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,
Bedankt voor de reacties tot nu toe!
Zoek eens op databasenormalisatie. Je kunt wel proberen om dit werkend te krijgen (en het kan vast ook) maar je kunt veel beter je tijd investeren in uitzoeken hoe het beter kan.quote:Bovenstaande oplossingen werken overigens niet.
Hierbij de gehele query, zoals de laatst genoemde mogelijkheid, niet werkend.
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 | FROM register_register r LEFT JOIN register_branches b ON b.code = LIKE Concat('%', r.branche_code, '%') WHERE r.id IN (". $sphinx['result']. " 0) AND b.total_in > 0 AND b.in_small_overview > 0 GROUP BY branche_code ORDER BY total_in DESC LIMIT 10" |
GAD-VER-DAM-MEquote:Op maandag 10 november 2008 20:44 schreef Likkende_Lassie het volgende:
In dat veld staan de ID's van de branches, als volgt: ,6543,34543,4323,65432,1234,
Een koppeltabel, zou die er zou uit kunnen zien?quote:Op maandag 10 november 2008 21:01 schreef Light het volgende:
[..]
Daar was ik al bang voor. Een koppeltabel is dan een veel betere oplossing. Gewoon een tabel met id's, kun je ook indexen op zetten. Is ook veel sneller met doorzoeken.
[..]
Zoek eens op databasenormalisatie. Je kunt wel proberen om dit werkend te krijgen (en het kan vast ook) maar je kunt veel beter je tijd investeren in uitzoeken hoe het beter kan.
1 |
Yepquote:Op maandag 10 november 2008 21:06 schreef Likkende_Lassie het volgende:
[..]
Een koppeltabel, zou die er zou uit kunnen zien?
brancheID registerID
04200 123456
0915 123456
3116 654321
dus meerdere regels voor een registerid?
1 2 3 4 5 6 7 8 | `id` int(11) NOT NULL auto_increment, `brancheID` int(11) NOT NULL, `registerID` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `brancheID` (`brancheID`), KEY `registerID` (`registerID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; |
Dat veld ID is niet echt nuttig. Ik zou de tabel anders maken:quote:Op maandag 10 november 2008 21:32 schreef Likkende_Lassie het volgende:
Ok! Hij is nu bezig alles in te voeren, moet heel wat records inlezen en verwerken, duurt dus even.
De tabel ziet er zo uit:
[ code verwijderd ]
1 2 3 4 5 6 | `brancheID` int(11) NOT NULL, `registerID` int(11) NOT NULL, PRIMARY KEY (`brancheID`,`registerID`), KEY `registerID` (`registerID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $Month = "11"; $Year = "2008"; $DaysMonth = cal_days_in_month(CAL_GREGORIAN, $Month, $Year); for ($i = 1; $i <= $DaysMonth; $i++) { echo 'De datum ' .$i. '-' .$Month. '-' .$Year. ', valt op '; $day = date("l", mktime(0, 0, 0, $Month, $i, $Year)); if ($day == "Monday") { echo 'Maandag'; } if ($day == "Tuesday") { echo 'Dinsdag'; } if ($day == "Wednesday") { echo 'Woensdag'; } if ($day == "Thursday") { echo 'Donderdag'; } if ($day == "Friday") { echo 'Vrijdag'; } if ($day == "Saturday") { echo 'Zaterdag'; } if ($day == "Sunday") { echo 'Zondag'; } echo '<br />'; } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |